Problem: Objekt nicht serialisierbarSpark Avro zu Parquet Writer
Können Sie bitte sehen, wie das Problem zu beheben. in der Lage, es richtig zu lesen wie das Drucken richtig. aber während die Aufzeichnungen schriftlich Parkett
Objekt nicht immer serializable
verursacht durch: java.io.NotSerializableException: parquet.avro.AvroParquetWriter Serialisierung Stack: - Objekt nicht serializable (Klasse: parquet.avro .AvroParquetWriter, Wert: [email protected])
Bitte lesen sie und lassen sie mich wissen, was der beste Weg, es zu tun.
Code: coverting Avro Datensatz Parkett
val records = sc.newAPIHadoopRDD(conf.getConfiguration,
classOf[AvroKeyInputFormat[GenericRecord]],
classOf[AvroKey[GenericRecord]], //Transforms the PairRDD to RDD
classOf[NullWritable]).map(x => x._1.datum)
// Build a schema
val schema = SchemaBuilder
.record("x").namespace("x")
.fields
.name("x").`type`().stringType().noDefault()
.endRecord
val parquetWriter = new AvroParquetWriter[GenericRecord](new Path(outPath), schema)
val parquet = new GenericRecordBuilder(schema)
records.foreach { keyVal =>
val x = keyVal._1.datum().get("xyz") -- Field
parquet.set("x", x)
.build
parquetWriter.write(schema.build())
}
Danke für den Ansatz zu lesen. aber Problem ist, das ist verschachtelte Struktur von Array, Liste, Karte. Sehr große verschachtelte Avro. Um also zu flattern, müssen wir alle Elemente durchlaufen und alles Notwendige bekommen. – Ankur
wäre es schön, wenn Sie eine dieser Antworten aufwerten und akzeptieren würden. Ich habe jede Frage beantwortet, die du gestellt hast. @ Ankur – mark