python-3.x - 如何使用 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 库来实现这一点,我应该尝试哪些其他工具/库?
解决方案
推荐阅读
- java - 如何在佳能 LBP2900 或任何使用 USB OTG 的打印机上打印?
- java - 打印数组中具有负和的子数组的数量
- python - LSH 即时分箱
- mysql - MySQL SELECT 行基于前缀
- python - wxpython中多帧的代码布局指南
- laravel - 表不呈现(Yajra 数据表)
- mysql - 总结mysql表中的重复行
- javascript - 如何在硒中打印页面并关闭“打印”窗口
- math - 后缀符号正在改变评估中括号的优先级
- angular8 - 如何修复“错误:找不到构建器 @angular-devkit/build-angular:dev-server 的实现”