首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark并不总是在毫秒内返回3位数

Spark并不总是在毫秒内返回3位数
EN

Stack Overflow用户
提问于 2021-10-25 14:32:21
回答 1查看 71关注 0票数 0

我正在使用spark框架从Apache凤凰表中提取数据。

查询:

代码语言:javascript
复制
"(select EVENT_TIME FROM TRADING_EVENTS WHERE EVENT_TIME >= TO_TIMESTAMP('2021-09-14 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS', 'GMT+2') and EVENT_TIM <= TO_TIMESTAMP('2021-09-14 23:59:59.999', 'yyyy-MM-dd HH:mm:ss.SSS', 'GMT+2')"

守则:

代码语言:javascript
复制
DataFrame result =
                sqlContext.read().format("org.apache.phoenix.spark").jdbc(zkUrl, sql, new Properties()));
result.show(100);

查询本身执行,我有结果,但我注意到有些时间戳的格式化方式不同:

代码语言:javascript
复制
2021-09-14 00:00:00.004
2021-09-14 00:00:00.004
2021-09-14 00:00:00.005
2021-09-14 00:00:00.006
2021-09-14 00:00:00.006
2021-09-14 00:00:00.008
2021-09-14 00:00:00.008
2021-09-14 00:00:00.009
2021-09-14 00:00:00.009
2021-09-14 00:00:00.01
2021-09-14 00:00:00.01
-> 2021-09-14 00:00:00.10
2021-09-14 00:00:00.014
-> 2021-09-14 00:00:00.02
2021-09-14 00:00:00.02
-> 2021-09-14 00:00:00.0
2021-09-14 00:00:00.028

首先,我认为这是因为火花不会在毫秒内显示剩余的0,但即使假设这一点,我也有一些非常不一致的结果,例如:

00:00:00.10

  • 2021-09-14 00:00:00.02

  • 2021-09-14 00:00:00.4

  • 2021-09-14 00:00:00.004

  • 2021-09-14

有什么办法可以让我的工作不这样做吗?另外,当我直接从菲尼克斯数据库显示行时,所有的行都会被正确地格式化。

EN

回答 1

Stack Overflow用户

发布于 2021-10-29 14:14:09

当您将时间戳转换为时间戳时,数据库中的日期将转换为时间戳的内部火花表示形式,当您执行show时,它将执行某种类型的默认toString函数。

为了呈现一个均匀填充的字符串,我建议你做如下的事情:

代码语言:javascript
复制
df.withColumn("formatted_timestamp", date_format(col('timestamp'),'yyyy-MM-dd HH:mm:ss.SSS'))

它会在你的时间戳上印上零。

more here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69709905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档