Как я могу прочитать все файлы паркета, хранящиеся в HDFS, используя Apache-Beam 2.13.0 Python SDK с прямым запуском, если структура каталогов следующая:
data/
├── a
│ ├── file_1.parquet
│ └── file_2.parquet
└── b
├── file_3.parquet
└── file_4.parquet
Я пробовал beam.io.ReadFromParquet
и hdfs://data/*/*
:
import apache_beam as beam
from apache_beam.options.pipeline_options import PipelineOptions
HDFS_HOSTNAME = 'my-hadoop-master-node.com'
HDFS_PORT = 50070
HDFS_USER = "my-user-name"
pipeline_options = PipelineOptions(hdfs_host=HDFS_HOSTNAME, hdfs_port=HDFS_PORT, hdfs_user=HDFS_USER)
input_file_hdfs_parquet = "hdfs://data/*/*"
p = beam.Pipeline(options=pipeline_options)
lines = p | 'ReadMyFile' >> beam.io.ReadFromParquet(input_file_hdfs_parquet)
_ = p.run()
Я сталкиваюсь со следующей ошибкой:
IOErrorTraceback (most recent call last)
...
IOError: No files found based on the file pattern hdfs://data/*/*
Использование
input_file_hdfs_parquet = "hdfs://data/a/*"
, я могу читать все файлы в каталоге a
.