【发布时间】:2019-07-16 11:47:42
【问题描述】:
我正在尝试将 HDFS 目录中的小型 avro 文件合并到一个文件中。有人可以指导我如何使用 scala-spark 合并它们。提前致谢。
下面显示的代码使用 newAPIHadoopFile 方法创建一个 RDD。
val src = "/hdfs/path/to/folder"
val rdd = sc.newAPIHadoopFile(src, classOf[AvroKeyInputFormat[GenericRecord]], classOf[AvroKey[GenericRecord]], classOf[NullWritable], sc.hadoopConfiguration)
下面的错误告诉我我做错了什么:
scala> rdd.take(1).foreach(println)
19/07/16 07:28:59 WARN AvroKeyInputFormat: Reader schema was not set. Use AvroJob.setInputKeySchema() if desired.
19/07/16 07:28:59 ERROR Executor: Exception in task 0.0 in stage 2.0 (TID 2)
java.io.NotSerializableException: org.apache.avro.mapred.AvroKey
Serialization stack:
- object not serializable (class: org.apache.avro.mapred.AvroKey, value: {someValue})
- field (class: scala.Tuple2, name: _1, type: class java.lang.Object)
- object (class scala.Tuple2, (someValue,(null)))
- element of array (index: 0)
- array (class [Lscala.Tuple2;, size 1)
【问题讨论】:
标签: scala apache-spark hadoop avro