pyarrow可以像fastparquet的file\u scheme='hive'选项那样将多个Parquet文件写入一个文件夹吗?

jk9hmnmh  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(399)

我有一个数百万条记录的sql表,我计划使用pyarrow库将它写入一个文件夹中的许多parquet文件。数据内容似乎太大,无法存储在单个Parquet文件中。
但是,在pyarrow库中似乎找不到允许我指定如下内容的api或参数:

file_scheme="hive"

正如fastparquet python库所支持的那样。
下面是我的示例代码:


# !/usr/bin/python

import pyodbc
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq

conn_str = 'UID=username;PWD=passwordHere;' + 
    'DRIVER=FreeTDS;SERVERNAME=myConfig;DATABASE=myDB'

# ----> Query the SQL database into a Pandas dataframe

conn = pyodbc.connect( conn_str, autocommit=False)
sql = "SELECT * FROM ClientAccount (NOLOCK)"
df = pd.io.sql.read_sql(sql, conn)

# ----> Convert the dataframe to a pyarrow table and write it out

table = pa.Table.from_pandas(df)
pq.write_table(table, './clients/' )

这会引发一个错误:

File "/usr/local/lib/python2.7/dist-packages/pyarrow/parquet.py", line 912, in write_table
    os.remove(where)
OSError: [Errno 21] Is a directory: './clients/'

如果我将最后一行替换为以下内容,它可以正常工作,但只写入一个大文件:

pq.write_table(table, './clients.parquet' )

你知道如何用pyarrow实现多文件输出吗?

weylhg0b

weylhg0b1#

尝试 pyarrow.parquet.write_to_dataset https://github.com/apache/arrow/blob/master/python/pyarrow/parquet.py#l938.
我打开了https://issues.apache.org/jira/browse/arrow-1858 关于添加更多关于此的文档。
我建议在邮件列表中寻求对apachearrow的支持dev@arrow.apache.org. 谢谢!

相关问题