Используйте AvroBigQueryInputFormat для чтения из BigQuery в Pyspark

Я использовал этот учебник, чтобы получить данные из 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 будет принята с благодарностью!

0 ответов

Другие вопросы по тегам