我正在使用 cloudera 5.4.1 和 spark 1.3.0
这段代码是我写的
val path = "/input/"
val conf = new SparkConf()
.setAppName("Form Submissions")
val sc = new SparkContext(conf)
val sqlConf = new SQLContext(sc)
val df = sqlConf.read.avro(path)
df.foreach(println)
这是我的sbt文件
name := "SparkAvro"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies ++= Seq(
//"org.apache.spark" % "spark-core_2.10" % "1.2.0",
"org.apache.spark" % "spark-core_2.10" % "1.5.2" % "provided",
"org.apache.spark" % "spark-sql_2.10" % "1.5.2" % "provided",
"com.databricks" % "spark-avro_2.10" % "1.0.0"
)
mainClass in assembly := Some("com.abhi.SparkAvro")
当我构建这个项目时,它失败并显示此错误消息
[error] /Users/ab/MyProjects/SparkAvro/src/main/scala/com/abhi/SparkAvro.scala:17:
value avro is not a member of org.apache.spark.sql.DataFrameReader
[error] val df = sqlConf.read.avro(input)
[error] ^
[error] one error found
因此,似乎 Spark Avro 的 github 页面上的文档适用于 2.0.1 版,而这些 API 不适用于 1.0 版的 Spark Avro。
我尝试在网上搜索,但找不到可向我展示如何在 Spark Avro 1.0 上编写代码以及如何在 HDFS 上解析 Avro 文件的文档。
最佳答案
导入隐式转换也可以
import com.databricks.spark.avro._
关于hadoop - 值 avro 不是 org.apache.spark.sql.DataFrameReader 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34092198/