如何在本地文件系统(例如python,某些库等)中将Parquet转换为CSV,但不使用Spark?(尝试找到尽可能简单和简约的解决方案,因为需要自动化一切并且没有太多资源)。
我尝试了例如在我的Mac上使用parquet-tools
,但数据输出看起来不正确。
需要使输出这样,即当某些列中不存在数据时,CSV将具有相应的NULL(在两个逗号之间的空列)。
谢谢。
如何在本地文件系统(例如python,某些库等)中将Parquet转换为CSV,但不使用Spark?(尝试找到尽可能简单和简约的解决方案,因为需要自动化一切并且没有太多资源)。
我尝试了例如在我的Mac上使用parquet-tools
,但数据输出看起来不正确。
需要使输出这样,即当某些列中不存在数据时,CSV将具有相应的NULL(在两个逗号之间的空列)。
谢谢。
你可以使用Python包pandas
和pyarrow
来实现这一点(pyarrow
是pandas
的可选依赖项,需要此功能)。
import pandas as pd
df = pd.read_parquet('filename.parquet')
df.to_csv('filename.csv')
当您需要对文件中的内容进行修改时,可以使用pandas
操作对df
进行标准化处理。
import sys
import pandas as pd
!{sys.executable} -m pip install pyarrow
parquet_file = 'fhv_tripdata_2022-04.parquet'
df = pd.read_parquet(parquet_file)
csv_output = 'yellow_taxi_cab.csv'
df.to_csv(csv_output, index=False, sep='\t')
有一个名为fastparquet的包,可以读取parquet文件中的数据:
from fastparquet import ParquetFile
# Reading the data from Parquet File
pf = ParquetFile("userdata.parquet")
# Converting data in to pandas dataFrame
dataFrame = pf.to_pandas()
# Converting to CSV
dataFrame.to_csv("converted.csv", index = False)
duckb.sql("COPY(SELECT * FROM path/to/file.csv TO 'path/to/file.parquet' (FORMAT 'parquet'))")
扩展Uwe L. Korn的说法 - 如果你有一个大的parquet文件,并且在加载到Pandas时速度较慢,那么尝试使用Pandas的fastparquet引擎read_parquet方法。
import pandas as pd
df = pd.read_parquet('filename.parquet', engine='fastparquet')
df.to_csv('filename.csv')
pydev 调试器: 进程 31141 正在连接 已连接到 pydev 调试器 (build 191.7479.30) 进程以退出代码 -1 结束```
- Robdf.to_csv('file.csv', index=False)
- Ambareesh