我正在使用带有pyarrow库的python,我想在HDFS上编写一个熊猫数据框。这是我的代码
import pandas as pd
import pyarrow as pa
fs = pa.hdfs.connect(namenode, port, username, kerb_ticket)
df = pd.DataFrame(...)
table = pa.Table.from_pandas(df)
根据文档,我应该使用以下代码在HDFS上编写pyarrow.Table
import pyarrow.parquet as pq
pq.write_parquet(table, 'filename.parquet')
我不知道该在哪里使用我的连接(fs
),因为如果我不在write_parquet
中使用它,那它怎么知道HDFS在哪里? / p>
答案 0 :(得分:1)
您可以做到
with fs.open(path, 'wb') as f:
pq.write_parquet(table, f)
我打开了JIRA,以添加有关此问题的更多文档
答案 1 :(得分:1)
基于文档:https://arrow.apache.org/docs/python/api/formats.html#parquet-files
您可以使用write_table或write_to_dataset函数:
write_table具有多个参数,以下参数很少:
table -> pyarrow.Table
where -> this can be a string or the filesystem object
filesystem -> Default is None
示例
pq.write_table(table, path, filesystem = fs)
或
with fs.open(path, 'wb') as f:
pq.write_table(table, f)
如果要基于表中的某些列对数据进行分区,则可以使用write_to_dataset,例如:
pq.write_to_dataset(table, path, filesystem = fs, partition_cols = [col1])