Spark - 写Avro文件

iul*_*tru 4 avro apache-spark

在这样的流程中使用Spark(使用Scala API)编写Avro文件的常见做法有哪些:

  1. 从HDFS解析一些日志文件
  2. 为每个日志文件应用一些业务逻辑并生成Avro文件(或者可能合并多个文件)
  3. 将Avro文件写入HDFS

我尝试使用spark-avro,但它没有多大帮助.

val someLogs = sc.textFile(inputPath)

val rowRDD = someLogs.map { line =>
  createRow(...)
}

val sqlContext = new SQLContext(sc)
val dataFrame = sqlContext.createDataFrame(rowRDD, schema)
dataFrame.write.avro(outputPath)
Run Code Online (Sandbox Code Playgroud)

这失败了,错误:

org.apache.spark.sql.AnalysisException:引用'StringField'不明确,可能是:StringField#0,StringField#1,StringField#2,StringField#3,...

提前致谢,

尤利安

Sud*_*yam 10

Databricks提供了库spark-avro,它可以帮助我们读取和编写Avro数据.

dataframe.write.format("com.databricks.spark.avro").save(outputPath)
Run Code Online (Sandbox Code Playgroud)