Используйте AvroBigQueryInputFormat для чтения из BigQuery в Pyspark - PullRequest
0 голосов
/ 28 августа 2018

Я использовал этот урок , чтобы получить данные из Bigquery в pyspark:

table_data = sc.newAPIHadoopRDD(
    'com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat',
    'org.apache.hadoop.io.LongWritable',
    'com.google.gson.JsonObject',
    conf=conf)

Однако JsonTextBigQueryInputFormat плохо справляется с обработкой пустых полей, и поэтому я хотел бы переключиться на com.google.cloud.hadoop.io.bigquery.AvroBigQueryInputFormat . Что будет valueClass для использования здесь? Очевидно, что нет com.google.gson.JsonObject , но я могу найти только примеры в scala, которые используют org.apache.avro.generic.GenericData.Record . Это, к сожалению, заканчивается для меня ошибкой:

    - object not serializable (class: org.apache.avro.generic.GenericData$Record, value: {"member_id": "1234567", "last_event": 1533279838208000})
    - field (class: scala.Tuple2, name: _2, type: class java.lang.Object)
    - object (class scala.Tuple2, (1,{"member_id": "1234567", "last_event": 1533279838208000}))
    - element of array (index: 0)
    - array (class [Lscala.Tuple2;, size 1)

Буду очень признателен за любую помощь, чтобы заставить это работать в pyspark!

...