我想读取一个 csv 文件并使用 apache Beam 数据流将其写入 BigQuery。为此,我需要以字典的形式将数据呈现给 BigQuery。为了做到这一点,我如何使用 apache Beam 转换数据?
我的输入 csv 文件有两列,我想在 BigQuery 中创建一个后续的两列表。我知道如何在 BigQuery 中创建数据,这很简单,我不知道如何将 csv 转换为字典。下面的代码不正确,但应该让我知道我正在尝试做什么。
# Standard imports
import apache_beam as beam
# Create a pipeline executing on a direct runner (local, non-cloud).
p = beam.Pipeline('DirectPipelineRunner')
# Create a PCollection with names and write it to a file.
(p
| 'read solar data' >> beam.Read(beam.io.TextFileSource('./sensor1_121116.csv'))
# How do you do this??
| 'convert to dictionary' >> beam.Map(lambda (k, v): {'luminosity': k, 'datetime': v})
| 'save' >> beam.Write(
beam.io.BigQuerySink(
output_table,
schema='month:INTEGER, tornado_count:INTEGER',
create_disposition=beam.io.BigQueryDisposition.CREATE_IF_NEEDED,
write_disposition=beam.io.BigQueryDisposition.WRITE_TRUNCATE)))
p.run()