gpt4 book ai didi

python - Parquet 与 Dask/Pandas 和 Pyspark 的兼容性

转载 作者:行者123 更新时间:2023-12-01 00:06:23 28 4
gpt4 key购买 nike

这与 here 是同一个问题,但接受的答案对我不起作用。

尝试:我尝试以 parquet 格式保存 dask 数据帧并使用 Spark 读取它。

问题:时间戳列无法被 pyspark 解释

我做了什么:

我尝试使用 hfds 将 Dask 数据帧保存为 Parquet

import dask.dataframe as dd
dd.to_parquet(ddf_param_logs, 'hdfs:///user/<myuser>/<filename>', engine='pyarrow', flavor='spark')

然后我用 pyspark 读取该文件:

sdf = spark.read.parquet('hdfs:///user/<myuser>/<filename>')
sdf.show()

>>> org.apache.spark.sql.execution.QueryExecutionException: Parquet column cannot be converted in file hdfs://nameservice1/user/<user>/<filename>/part.0.parquet. Column: [utc_timestamp], Expected: bigint, Found: INT96

但是如果我保存数据框

dd.to_parquet(ddf_param_logs, 'hdfs:///user/<myuser>/<filename>', engine='pyarrow', use_deprecated_int96_timestamps=True)

utc时间戳列包含unix格式的时间戳信息(1578642290403000)

这是我的环境:

dask==2.9.0
dask-core==2.9.0
pandas==0.23.4
pyarrow==0.15.1
pyspark==2.4.3

最佳答案

明确包含 INT96 类型是为了与 Spark 兼容,Spark 选择不使用 parquet 规范定义的标准时间类型。不幸的是,他们似乎又变了,不再使用自己以前的标准,而不是 parquet 标准。

如果您能在这里找到 Spark 想要的类型,并将问题发布到 dask 存储库,我们将不胜感激。您希望从包含时间列的 Spark 中输出数据,并查看其最终的格式。

您是否也尝试过 fastparquet 后端?

关于python - Parquet 与 Dask/Pandas 和 Pyspark 的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59948321/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com