当前位置: 首页 > 知识库问答 >
问题:

时间戳字段在EMR上的Presto 0.170中显示1970-01-01

周睿范
2023-03-14

我有一个外部配置单元表指向通过s3上的Spark作业编写的拼花文件,它有日期、时间戳字段,当我通过配置单元查询时,我会得到正确的日期

CREATE EXTERNAL TABLE events(
event_date date, 
event_timestamp timestamp, 
event_name string, 
event_category string
PARTITIONED BY ( 
dateid  int, 
STORED AS PARQUET
LOCATION 's3a://somebucket/events'

hive> SELECT event_timestamp, event_date from events limit 10; 
2017-01-02 13:40:23 2017-01-02
2017-01-02 13:40:23.013 2017-01-02
2017-01-02 13:40:23.419 2017-01-02
2017-01-02 18:51:57.637 2017-01-02
2017-01-02 18:52:03.512 2017-01-02
2017-01-02 18:52:03.769 2017-01-02
2017-01-02 18:52:30.945 2017-01-02
2017-01-02 18:52:32.757 2017-01-02
2017-01-02 18:52:37.083 2017-01-02
2017-01-02 18:52:38.099 2017-01-02

但是,当我通过运行在EMR集群版本(EMR-5.6.0)上的presto(版本0.170)运行它时,我看到所有的日期都是1970-01-01

 presto-cli --catalog hive --schema default
presto:default> SELECT event_timestamp, event_date from events limit 10; 
 1970-01-01 00:00:17.197 | 1970-01-01 
 1970-01-01 00:00:17.197 | 1970-01-01 
 1970-01-01 00:00:17.197 | 1970-01-01 
 1970-01-01 00:00:17.197 | 1970-01-01 
 1970-01-01 00:00:17.197 | 1970-01-01 
 1970-01-01 00:00:17.197 | 1970-01-01 
 1970-01-01 00:00:17.197 | 1970-01-01 
 1970-01-01 00:00:17.197 | 1970-01-01 
 1970-01-01 00:00:17.197 | 1970-01-01 
 1970-01-01 00:00:17.197 | 1970-01-01 

通过presto进行Parquet查询的Hive中的时间戳字段是否存在任何未解决的问题?

共有1个答案

伏子辰
2023-03-14

经过在线研究,无果而终,我对parquet文件和hive DDL语句中的字段顺序进行了比较,似乎在Spark作业开发过程中,字段的顺序发生了变化。虽然hive能够通过名称读取列,但presto是按顺序进行的。因此,一个愚蠢的错误会导致徒劳的追逐。不管怎么说,无耻地回答我自己的问题来结束这条线。

 类似资料:
  • 问题内容: 我有一个日期格式为的表格。为了搜索数据库,我将日期格式转换为。但是当我显示它时。PHP代码如下: 为什么会这样呢?如何将其格式化为? 问题答案: 替换为:

  • 问题内容: 我正在使用具有以下格式mm / dd / yyyy的jquery datepicker,但我需要它是sql数据库的yyyy-mm-dd,所以我正在使用它。 与以下 不幸的是,无论输入什么,我都会在数据库中注册1970-01-01。有什么想法我做错了吗?非常感谢你的帮助。 问题答案: 当您从那里回来时,意味着时间戳不正确。该日期是UNIX时代。 当涉及到Javascript(在这种情况下

  • 问题内容: 为什么在能够过滤查询时无法看到_timestamp字段? 以下查询返回正确的文档,但不会返回时间戳本身。如何返回时间戳? 映射为: 样本输出: 问题答案: 启用时间戳字段后,默认情况下会对其进行索引但不存储。因此,尽管您可以通过时间戳字段进行搜索和过滤,但是您无法轻松地通过记录来检索它。为了能够检索时间戳字段,您需要使用以下映射重新创建索引: 这样,您将能够检索到时间戳记以来的毫秒数。

  • 我需要使用格式“m-d-Y H:I:s.u”(包括毫秒)在laravel应用程序上以高精度的时间戳存储更新的_ 根据laravel文档,我可以通过在类上设置$dateFormat属性来自定义日期格式,但是。。。 主要问题是Laravel的模式生成器在数据库中添加了一列类型时间戳,当我使用$table- 有什么办法可以做到这一点吗?

  • 我对firestore(和编程)比较陌生,无法在网上找到解决问题的方法。 如果还有什么可能有帮助的,请告诉我。谢谢! 编辑以显示下一次尝试:

  • 有什么办法可以做到这一点吗?我们如何在spring data jpa方法名中做到这一点?