【发布时间】:2015-11-23 18:53:15
【问题描述】:
在这样的流程中使用 Spark(使用 Scala API)编写 Avro 文件的常见做法是什么:
- 从 HDFS 解析一些日志文件
- 为每个日志文件应用一些业务逻辑并生成 Avro 文件(或者可能合并多个文件)
- 将 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)
这失败并出现错误:
org.apache.spark.sql.AnalysisException:
Reference 'StringField' is ambiguous, could be: StringField#0, StringField#1, StringField#2, StringField#3, ...
【问题讨论】:
-
您能说得更具体些吗?例如为什么 `spark-avro` 对你不起作用?
-
我没有成功使用 Avro 生成的 java 代码和 spark-avro。此外,当我使用 Schema API 时,我会收到此类错误:org.apache.spark.sql.AnalysisException: Reference 'StringField' is ambiguous, could be: StringField#0, StringField#1, StringField#2, StringField#3 ,
-
@d4rkang3l 你确定问题出在 avro 序列化上吗?生成的dataFrame是否没有问题?
标签: apache-spark avro