Parquet 与 Dask/Pandas 和 Pyspark 的兼容性
Parquet compatibility with Dask/Pandas and Pyspark
这是与 相同的问题,但已接受的答案对我不起作用。
尝试:
我尝试以 parquet 格式保存一个 dask 数据框并用 spark 读取它。
问题:pyspark无法解释时间戳列
我做了什么:
我尝试使用
将 hfds 中的 Dask 数据帧保存为镶木地板
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 规范定义的标准时间类型。不幸的是,他们似乎又变了,不再使用他们以前的标准,而不是镶木地板。
如果您能在这里找到 spark 想要的类型,并且 post 向 dask 回购提出问题,我们将不胜感激。您可能希望从包含时间列的 spark 中输出数据,并查看其最终格式。
您是否也尝试过 fastparquet 后端?
这是与
尝试: 我尝试以 parquet 格式保存一个 dask 数据框并用 spark 读取它。
问题:pyspark无法解释时间戳列
我做了什么:
我尝试使用
将 hfds 中的 Dask 数据帧保存为镶木地板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 规范定义的标准时间类型。不幸的是,他们似乎又变了,不再使用他们以前的标准,而不是镶木地板。
如果您能在这里找到 spark 想要的类型,并且 post 向 dask 回购提出问题,我们将不胜感激。您可能希望从包含时间列的 spark 中输出数据,并查看其最终格式。
您是否也尝试过 fastparquet 后端?