我在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的最快方法是什么?
1条答案
按热度按时间tnkciper1#
你说得对。选项2只是选项1的底层。
将Parquet文件读入Pandas的最快方法是什么?
选项1和选项2可能都已经足够好了。但是,如果你想把每一个比特都剃掉,你可能需要更深一层,这取决于你的pyarrow版本。事实证明,选项1实际上也只是一个代理,在这种情况下是数据集API:
字符串
对于pyarrow版本>= 4和< 7,使用异步扫描器通常可以在S3上获得稍好的性能:
型
在pyarrow版本7中,异步扫描器是默认的,因此您可以再次简单地使用
pd.read_parquet("s3://tpc-h-parquet/lineitem/part0.snappy.parquet")