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