Как написать на 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 принимает несколько параметров, некоторые из которых приведены ниже:
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])
Ты можешь сделать это
with fs.open(path, 'wb') as f:
pq.write_parquet(table, f)
Я открыл JIRA о добавлении еще документации об этом