csvファイルをparquetに変換する方法 質問する

csvファイルをparquetに変換する方法 質問する

私は BigData の初心者です。/ ファイルを Parquet 形式に変換する必要があります。いろいろ検索しましたが、直接的な方法は見つかりませんでした。それを実現する方法はありますか.csv?.txt

ベストアンサー1

すでに投稿しました答えApache Drillを使用してこれを行う方法については、こちらをご覧ください。ただし、Pythonに精通している場合は、パンダそしてピヤロー

依存関係をインストールする

使用方法pip:

pip install pandas pyarrow

または以下を使用しますconda:

conda install pandas pyarrow -c conda-forge

CSV をチャンク単位で Parquet に変換する

# 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 バージョンと比較したことはありません。しかし、私の経験では、1 秒あたり数万行を変換するほど十分に高速です (もちろん、これは CSV ファイルによって異なります)。


編集:

CSVファイルをPyArrowテーブルに直接読み込むことができるようになりました。pyarrow.csv.read_csv柔軟性は劣るものの、おそらく Pandas CSV リーダーを使用するよりも高速です。

おすすめ記事