csv ファイルを読み取り、Apache Beam データフローを使用して BigQuery に書き込みたいと考えています。これを行うには、データを辞書の形式で BigQuery に提示する必要があります。これを行うためにApacheビームを使用してデータを変換するにはどうすればよいですか?
私の入力 csv ファイルには 2 つの列があり、BigQuery で後続の 2 列のテーブルを作成したいと考えています。私は 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()