Python Athena为拼花文件中的时间戳字段返回错误的值
我在这里主要转述我所看到的一个问题,希望stackoverflow社区的回答/解释比论坛上的讨论更全面、更具启发性 以下是我对这个问题的经验: 我使用pandas从python中的数据帧创建拼花文件,并使用pandas.to_datetime将字段/列say birth转换为Python Athena为拼花文件中的时间戳字段返回错误的值,python,amazon-web-services,amazon-s3,parquet,amazon-athena,Python,Amazon Web Services,Amazon S3,Parquet,Amazon Athena,我在这里主要转述我所看到的一个问题,希望stackoverflow社区的回答/解释比论坛上的讨论更全面、更具启发性 以下是我对这个问题的经验: 我使用pandas从python中的数据帧创建拼花文件,并使用pandas.to_datetime将字段/列say birth转换为datetime64[ns]。这个过程的这一部分似乎完美无瑕,因为我可以使用pandas.read\u parquet读取拼花文件,并获得我期望的结果,即在datetime中输入的日期。 然而,当我将所述拼花文件加载到AWS
datetime64[ns]
。这个过程的这一部分似乎完美无瑕,因为我可以使用pandas.read\u parquet
读取拼花文件,并获得我期望的结果,即在datetime中输入的日期。
然而,当我将所述拼花文件加载到AWS并在其上放置一个athena
表时,读取相同的生日列会产生垃圾日期,这些日期与拼花文件中的日期完全不匹配。例如:
t=pandas.DataFrame([['Haiti',pandas.to_datetime('1804-01-01')]),columns=['Country','Independence']))
t、 至拼花地板(“s3:///tmp/t.parquet”)
如果不存在,则创建外部表default.mytable(
`国家`字符串,
`独立时间戳
)
行格式SERDE'org.apache.hadoop.hive.ql.io.parquet.SERDE.ParquetHiveSerDe'
具有serdeproperty(
'序列化.格式'='1'
)位置's3:///tmp/'
TBLProperty('has_encrypted_data'='false');
从“默认值”中选择*。“mytable”限制为10;
您可以强制使用雅典娜能够理解的格式,使用“强制时间戳”来书写拼花地板:
t=pandas.DataFrame([['Haiti',pandas.to_datetime('1804-01-01')]),columns=['Country','Independence']))
t、 到拼花地板(“s3:///tmp/t.parquet”,强制时间戳为ms”)
如果不存在,则创建外部表default.mytable(
`国家`字符串,
`独立时间戳
)
行格式SERDE'org.apache.hadoop.hive.ql.io.parquet.SERDE.ParquetHiveSerDe'
具有serdeproperty(
'序列化.格式'='1'
)位置's3:///tmp/'
TBLProperty('has_encrypted_data'='false');
从“默认值”中选择*。“mytable”限制为10;
这是拼花地板值被存储为微秒,但被解释为毫秒,因此返回错误的值。您应该向AWS支持部门报告此情况。另外,由于雅典娜是基于普雷斯托的,你也可以提交一个问题。@PiotrFindeisen,谢谢。我发布了.pandas 1.1.4+fastparquet 0.4.1:pandas/io/parquet.py中的错误,函数write()“
TypeError:write()获取了一个意外的关键字参数“强制时间戳”
我正在使用pyarrow,以使熊猫能够读/写拼花。我猜kwarg强制时间戳是由pyarrow处理的,但不是fastparquet。你能用pyarrow尝试解决方案吗?我找到了使用fastparquet的解决方案。我通过了kwarg times=“int96”to df.to_parquet()生成了一个具有int96 datetime格式的拼花文件。雅典娜中的datetimes现在与我从pandas中输入的对应。
|Country | Independence|
|--------|-------------|
|Haiti | 1804-01-01 |
|Country | Independence |
|--------|--------------------------|
|Haiti |-164033-12-18 00:00:00.000|
|Country | Independence|
|--------|-------------|
|Haiti | 1804-01-01 |
|Country | Independence |
|--------|-----------------------|
|Haiti |1804-01-01 00:00:00.000|