Как написать на HDFS с помощью Pyarrow

Я использую Python с библиотекой Pyarrow, и я хотел бы написать pandas dataframe на 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)

Согласно документации, я должен использовать следующий код для написания pyarrow.Table на HDFS

import pyarrow.parquet as pq
pq.write_parquet(table, 'filename.parquet')

Что я не понимаю, где я должен использовать свое соединение (fs), потому что если я не буду использовать его в write_parquet тогда почему он знает, где находится HDFS?

2 ответа

Решение

На основании документа: https://arrow.apache.org/docs/python/api/formats.html

Вы можете использовать функцию 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])

Ты можешь сделать это

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

Я открыл JIRA о добавлении еще документации об этом

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

Другие вопросы по тегам