如何将 csv 文件转换为镶木地板
我是 BigData 的新手,我需要将 csv/txt 文件转换为 Parquet 格式。我搜索了很多,但找不到任何直接的方法。有什么办法可以做到这一点吗?
我是 BigData 的新手,我需要将 csv/txt 文件转换为 Parquet 格式。我搜索了很多,但找不到任何直接的方法。有什么办法可以做到这一点吗?
我已经发布了有关如何使用Apache Drill执行此操作的答案。但是,如果您熟悉Python,现在可以使用Pandas和PyArrow来执行此操作!
用:pip
pip install pandas pyarrow
或使用 :conda
conda install pandas pyarrow -c conda-forge
# csv_to_parquet.py
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq
csv_file = '/path/to/my.tsv'
parquet_file = '/path/to/my.parquet'
chunksize = 100_000
csv_stream = pd.read_csv(csv_file, sep='\t', chunksize=chunksize, low_memory=False)
for i, chunk in enumerate(csv_stream):
print("Chunk", i)
if i == 0:
# Guess the schema of the CSV file from the first chunk
parquet_schema = pa.Table.from_pandas(df=chunk).schema
# Open a Parquet file for writing
parquet_writer = pq.ParquetWriter(parquet_file, parquet_schema, compression='snappy')
# Write CSV chunk to the parquet file
table = pa.Table.from_pandas(chunk, schema=parquet_schema)
parquet_writer.write_table(table)
parquet_writer.close()
我还没有将此代码与Apache Drill版本进行基准测试,但根据我的经验,它的速度非常快,每秒转换数万行(这当然取决于CSV文件!
编辑:
现在,我们可以使用 pyarrow.csv.read_csv
将 CSV 文件直接读取到 PyArrow Tables 中。这可能比使用Pandas CSV阅读器更快,尽管它可能不太灵活。