读取Avro文件并将其写入BigQuery表

时间:2019-02-05 06:48:56

标签: google-bigquery google-cloud-storage google-cloud-dataflow apache-beam

我的目标是从Cloud存储中读取avro文件数据,然后使用Java将其写入BigQuery表。如果有人提供代码snipet / ideas来读取avro格式的数据并将其使用Cloud Dataflow写入BigQuery表,那将是很好的选择。

2 个答案:

答案 0 :(得分:1)

为此,您可以尝试使用以下Python脚本:

import apache_beam as beam
import sys

PROJECT='YOUR_PROJECT'
BUCKET='YOUR_BUCKET'

def run():
   argv = [
      '--project={0}'.format(PROJECT),
      '--staging_location=gs://{0}/staging/'.format(BUCKET),
      '--temp_location=gs://{0}/staging/'.format(BUCKET),
      '--runner=DataflowRunner'
   ]

   p = beam.Pipeline(argv=argv)

   (p
      | 'ReadAvroFromGCS' >> beam.io.avroio.ReadFromAvro('gs://{0}/file.avro'.format(BUCKET))
      | 'WriteToBigQuery' >> beam.io.WriteToBigQuery('{0}:dataset.avrotable'.format(PROJECT))
   )

   p.run()

if __name__ == '__main__':
   run()

希望有帮助。

答案 1 :(得分:1)

我看到两种可能的方法:

  1. 使用数据流:
isPrinted:false
  1. 无需数据流即可直接将数据导入BigQuery。请参阅此文档:https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro