如何使用pyarrow在HDFS上编写

时间:2019-08-14 18:36:34

标签: hdfs pyarrow libhdfs

我正在使用带有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>

2 个答案:

答案 0 :(得分:1)

您可以做到

with fs.open(path, 'wb') as f:
   pq.write_parquet(table, f)

我打开了JIRA,以添加有关此问题的更多文档

https://issues.apache.org/jira/browse/ARROW-6239

答案 1 :(得分:1)

基于文档:https://arrow.apache.org/docs/python/api/formats.html#parquet-files

您可以使用write_table或write_to_dataset函数:

write_table

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

如果要基于表中的某些列对数据进行分区,则可以使用write_to_dataset,例如:

pq.write_to_dataset(table, path, filesystem = fs, partition_cols = [col1])