首页 > 解决方案 > 如何使用 deltalake_rs python 库获取 parquet 文件的子集来创建 deltatable

问题描述

我正在使用 deltalake 0.4.5 Python 库将.parquet文件读入 adeltatable然后转换为pandas数据帧,按照此处的说明进行操作:https ://pypi.org/project/deltalake/ 。

这是执行此操作的 Python 代码:

from deltalake import DeltaTable

table_path = "s3://example_bucket/data/poc"
dt = DeltaTable(table_path)
files = dt.files()             # OK, returns the list of parquet files with full s3 path 
   # ['s3://example_bucket/data/poc/y=2021/m=4/d=13/h=16/part-00001-8765abc67.parquet', 
   #  's3://example_bucket/data/poc/y=2021/m=4/d=13/h=16/part-00002-7643adc87.parquet',
   #  ........]
total_file_count = len(files0) # OK, returns 115530

pt = dt.to_pyarrow_table()             # hangs
df = dt.to_pyarrow_table().to_pandas() # hangs

我相信它挂起是因为文件数量高达 115K+。

所以对于我的 PoC,我只想读取一天或一小时的文件。因此,我尝试将table_path变量设置为小时,但它给出了Not a Delta table错误,如下所示:

table_path = "s3://example_bucket/data/poc"
dt = DeltaTable(table_path)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib64/python3.7/site-packages/deltalake/table.py", line 19, in __init__
    self._table = RawDeltaTable(table_path, version=version)
deltalake.PyDeltaTableError: Not a Delta table

我怎样才能做到这一点?

如果deltalake不能使用 Python 库来实现这一点,我应该尝试哪些其他工具/库?

标签: python-3.xparquetpyarrowdelta-lake

解决方案


推荐阅读