Spark SQL:如何将“ yyyy-MM-dd HH:mm:ss.SSSSSSSSS”格式的时间字符串列转换为保留纳秒的时间戳?

时间:2019-06-24 09:19:42

标签: apache-spark dataframe hive apache-spark-sql hiveql

我正在尝试将具有"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"格式的时间戳字符串的String类型列转换为Timestamp类型。此转换操作应保留纳秒值。

我尝试通过指定时间戳记格式使用unix_timestamp()to_timestamp()方法,但是返回NULL值。

2 个答案:

答案 0 :(得分:0)

使用演员表:

pxx, freqs, bins, im = plt.specgram(sample,  NFFT=256, Fs=10000, noverlap=120)
plt.axis('off')
plt.close()

使用hive> select cast('2019-01-01 12:10:10.123456789' as timestamp); OK 2019-01-01 12:10:10.123456789 Time taken: 0.611 seconds, Fetched: 1 row(s)

timestamp()

答案 1 :(得分:0)

根据TimestampType和DateTimeUtils类的源代码中提供的描述,它们仅支持直到微秒精度的时间戳。 因此,我们无法在Spark SQL的TimestampType列中存储具有纳秒精度的时间戳。

参考文献:

https://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/types/TimestampType.scala

https://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala