복붙노트

[HADOOP] NoSuchMethodError : org.apache.spark.sql.SQLContext.applySchema

HADOOP

NoSuchMethodError : org.apache.spark.sql.SQLContext.applySchema

나는 아래의 코드를 사용하여 아파치 스파크에서 제공하는 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에서 제공하는 커맨드 라인을 사용하여 똑같은 방법을 시도해 보았습니다.하지만 작동하지만, 스칼라 프로젝트를 생성하고 그것을 실행하려고하면 위의 오류가 발생합니다. 내가 뭘 잘못하고 있죠 ?

해결법

  1. ==============================

    1.NoSuchMethodError는 대개 라이브러리간에 호환되지 않는 것을 의미합니다. 이 특별한 경우에는 이전 버전의 Spark와 함께 Spark 1.3이 필요한 spark-csv 버전을 사용하고있는 것처럼 보입니다.

    NoSuchMethodError는 대개 라이브러리간에 호환되지 않는 것을 의미합니다. 이 특별한 경우에는 이전 버전의 Spark와 함께 Spark 1.3이 필요한 spark-csv 버전을 사용하고있는 것처럼 보입니다.

  2. from https://stackoverflow.com/questions/29543400/nosuchmethoderror-org-apache-spark-sql-sqlcontext-applyschema by cc-by-sa and MIT license