У меня есть требование, чтобы иметь возможность проследить происхождение до отдельного файла паркета и иметь возможность выполнять массовые нагрузки, скажем, для воспроизведения файлов паркетных файлов за несколько лет, если в потоке данных должен был быть обнаружен дефект.
После многих попыток для массовых загрузок работает следующее, где options.input представляет собой RuntimeValueProvider и SplitFn просто yields
str.split()
:
with beam.Pipeline(options=PipelineOptions(), argv=args) as p:
mainPipe = p \
| 'CSV of URIs' >> beam.Create([options.input]) \
| 'Split URIs into records' >> beam.ParDo(SplitFn(',')) \
| "Read Parquet" >> beam.io.parquetio.ReadAllFromParquet(columns=[k for k in fields.keys()])
К сожалению beam.io.parquetio.ReadAllFromParquet не скажет, из какого файла поступила каждая запись, и не будет ReadFromParquet
, parquetio
единственной другой функцией.
За исключением выхода из Google CloudПоток данных или обучение команде Java, что я могу сделать, чтобы загрузить много паркетных файлов одновременно в BigQuery и узнать, из какого файла пришла каждая запись?