是否有任何特定的时间戳格式配置单元支持?
我的spark作业有一个时间戳"yyyy-MM-dd HH-MM-ss",但在将相同的数据存储在配置单元中时,数据是否会转换为null?
配置单元表的数据类型为时间戳
是的,您可以查看Hive语言手册
支持具有可选纳秒精度的传统UNIX时间戳。
支持的转换:
- 整数数字类型:解释为UNIX时间戳(以秒为单位(
- 浮点数字类型:解释为十进制精度的UNIX时间戳(以秒为单位(
- 字符串:JDBC兼容java.sql.Timestamp格式"YYYY-MM-DD HH:MM:SS.fffffff"(小数点后9位(
我认为这适用于您的案例
文本文件中的时间戳必须使用格式yyyy-mm-dd hh:mm:ss[.f…]。如果它们是另一种格式,请将它们声明为适当的类型(INT、FLOAT、STRING等(,并使用UDF将它们转换为时间戳
一种方法(结束昂贵的方法(是将mergeSchema
设置为true
更简单的方法是在时间戳列中使用类似coalesce(col("<spark_ts_column>"),lit("1970-01-01-00-00-00").cast(TimestampType))
的deafault值来处理null
顺便说一句,时间戳的格式看起来不标准,示例数据/代码会有所帮助。