Scala 从spark创建的csv读取的配置单元中的时间戳为空
我输入的数据如下:Scala 从spark创建的csv读取的配置单元中的时间戳为空,scala,apache-spark,hive,Scala,Apache Spark,Hive,我输入的数据如下: HEADER_A|HEADER_B|HEADER_C|HEADER_D 2018-09-28 22:12:09.0461760|first|last|123 2018-09-28 22:14:11.0123550|first|second|124 然后我将其读入数据帧,并将其保存为名为temp\u view的临时视图。所有内容都作为字符串读入 然后我将查询此临时视图: val df = sqlContext.sql(""" SELECT from_unixt
HEADER_A|HEADER_B|HEADER_C|HEADER_D
2018-09-28 22:12:09.0461760|first|last|123
2018-09-28 22:14:11.0123550|first|second|124
然后我将其读入数据帧,并将其保存为名为temp\u view
的临时视图。所有内容都作为字符串读入
然后我将查询此临时视图:
val df = sqlContext.sql("""
SELECT
from_unixtime(unix_timestamp(), 'yyyy-MM-dd HH:mm:ss') as ETL_RunDate,
HEADER_A as timestamp,
HEADER_B as string,
HEADER_c as string,
HEADER_D as string
FROM temp_view
""")
然后将数据帧写入文件。这个文件看起来像
2018-10-23 05:32:49|2018-09-28T22:12:09.046Z|first|last|123
2018-10-23 05:32:49|2018-09-28T22:14:11.123Z|first|second|124
如果然后使用此数据作为架构为的配置单元表的数据:
CREATE EXTERNAL TABLE `testdb.testtable`(
`runts` timestamp COMMENT '',
`header_a` timestamp COMMENT '',
`header_b` string COMMENT '',
`header_c` string COMMENT '',
`header_d` string COMMENT '')
并查询此表-
select * from testdb.testtable;
header\u a
应为空,因为基础数据在那里
发生这种情况的原因以及我如何解决此问题?问题是输出文件
yyyy-MM-dd'HH:MM:ss.SSSX
中的时间戳格式不同于默认的蜂巢时间戳格式yyy-MM-dd HH:MM:ss[.f..]
您有两个选择:
- 使用默认格式写出文件。您必须将write更新为类似
df.write.format(“csv”)选项(“dateFormat”、“yyyy-MM-dd hh:MM:ss.ssss”)
- 更新表的serdeProperty以读取格式–
ALTER table testtable SET serdeProperty(“timestamp.formats”=“yyy-MM-dd'T'HH:MM:ss.SSSX”)
serdeproperty
您可以尝试更改表临时视图集serdeproperty(“timestamp.formats”=“yyyy-MM-dd'T'HH:MM:ss.ssssss”)
。然后,查询df。