我正在尝试使用以下代码使用Apache Spark中提供的sqlcontext对存储在hdfs中的文件进行查询,但是我收到了NoSuchMethodError
package SQL
import org.apache.spark.SparkContext
import org.apache.spark.sql._
object SparSQLCSV { def main(args: Array[String]) {
val sc = new SparkContext("local[*]","home")
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val people = sc.textFile("/home/devan/Documents/dataset/peoplesTest.csv")
val delimiter = ","
val schemaString = "a,b".split(delimiter)//csv header
//Automated Schema creation
val schema = StructType(schemaString.map(fieldName => StructField(fieldName, StringType, true)))
val peopleLines = people.flatMap(x=> x.split("\n"))
val rowRDD = peopleLines.map(p=>{
Row.fromSeq(p.split(delimiter))
})
val peopleSchemaRDD = sqlContext.applySchema(rowRDD, schema)
peopleSchemaRDD.registerTempTable("people")
sqlContext.sql("SELECT b FROM people").foreach(println)
} }
我已经使用spark中提供的命令行尝试了相同的方法,并且可以正常工作,但是当我创建一个scala项目并尝试运行它时,出现上述错误。我究竟做错了什么 ?
最佳答案
NoSuchMethodError
通常意味着您在库之间不兼容。在这种情况下,您似乎使用的是Spark-csv版本,该版本要求Spark 1.3和旧版本的Spark。
关于hadoop - NoSuchMethodError:org.apache.spark.sql.SQLContext.applySchema,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29543400/