我在 AWS S3 中有一個 Parquet 檔案。我想將它讀入 Pandas DataFrame。我有兩種方法可以做到這一點。
1)
import pyarrow.parquet as pq
table = pq.read_table("s3://tpc-h-parquet/lineitem/part0.snappy.parquet") (takes 1 sec)
pandas_table = table.to_pandas() ( takes 1 sec !!! )
2)
import pandas as pd
table = pd.read_parquet("s3://tpc-h-parquet/lineitem/part0.snappy.parquet") (takes 2 sec)
我懷疑選項 2 實際上只是在引擎蓋下執行選項 1。
我將 Parquet 檔案讀入 Pandas 的最快方法是什么?
uj5u.com熱心網友回復:
你是對的。選項 2 只是引擎蓋下的選項 1。
我將 Parquet 檔案讀入 Pandas 的最快方法是什么?
選項 1 和選項 2 都可能足夠好。但是,如果你想剃掉每一點,你可能需要更深一層,這取決于你的 pyarrow 版本。事實證明,選項 1 實際上也只是一個代理,在這種情況下是資料集 API:
import pyarrow.dataset as ds
dataset = ds.dataset("s3://tpc-h-parquet/lineitem/part0.snappy.parquet")
table = dataset.to_table(use_threads=True)
df = table.to_pandas()
對于 pyarrow 版本 >= 4 和 < 7,您通常可以使用異步掃描器在 S3 上獲得稍好的性能:
import pyarrow.dataset as ds
dataset = ds.dataset("s3://tpc-h-parquet/lineitem/part0.snappy.parquet")
table = dataset.to_table(use_threads=True, use_async=True)
df = table.to_pandas()
在 pyarrow 版本 7 中,異步掃描器是默認設定,因此您可以再次簡單地使用pd.read_parquet("s3://tpc-h-parquet/lineitem/part0.snappy.parquet")
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422515.html
標籤:
上一篇:基于角色的跨賬戶S3訪問
