2017-08-24 55 views
0

我想在Spark(使用Scala)編寫非常簡單的腳本來編寫和讀取實木複合地板文件。使用這種example我寫了下面的代碼:Spark - org.apache.spark.sql.SQLContext(sc):bad symbolic reference

package com.mygroup 

import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkConf 

import org.apache.spark.sql 

object SimpleApp { 
    def main(args: Array[String]): Unit = { 
    val logFile = "C:/MyDocs/test.txt" // Should be some file on your system 
    val conf = new SparkConf().setAppName("Simple Application").setMaster("local[*]") 
    val sc = new SparkContext(conf) 

    //Tutorial to count words in a file 
    val logData = sc.textFile(logFile, 2).cache() 
    val numAs = logData.filter(line => line.contains("a")).count() 
    val numBs = logData.filter(line => line.contains("b")).count() 
    println(s"Lines with a: $numAs, Lines with b: $numBs") 

    //HERE STARTS THE PROBLEMATIC PART 
    val sqlContext = new org.apache.spark.sql.SQLContext(sc) 
    import sqlContext.implicits._ 

    //Open a parquet file 
    //logData.write.parquet("logData.parquet") 

    sc.stop() 
    } 
} 

val sqlContext = new org.apache.spark.sql.SQLContext(sc)我收到以下錯誤消息:

bad symbolic reference. A signature in SQLContext.class refers to term internal in package org.apache.spark which is not available. It may be completely missing from the current classpath, or the version on the classpath might be incompatible with the version used when compiling SQLContext.class.

所以,按照我的理解的問題,可能是我沒有添加正確的依賴或編譯器和類路徑之間的版本不兼容。

我的pom.xml具有以下依存關係:

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-core_2.10</artifactId> 
     <version>1.6.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-sql_2.10</artifactId> 
     <version>2.0.0</version> 
    </dependency> 
</dependencies> 

不知道spark-sql_2.10是這個正確的神器。在這裏,我的項目中添加了一個用於顯示spark-sql_2.10的圖像。

enter image description here

從這個link我得知SQLContext是自1.3.0可用。我正在使用Scala安裝2.10.6(內置)和目標jvm 1.6。所以這不應該是一個問題。

在情況下,它可能是有關我使用以及[J2SE - 1.5]和我的IDE是春天工具套件3.8.2(Eclipse中)

誰能告訴我,我錯過了什麼?

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.10</artifactId> 
    <version>2.1.0</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.10</artifactId> 
    <version>2.1.0</version> 
</dependency> 

繼錯誤的解決方案:scalac:壞符號引用

改變後好解決。在SQLContext.class簽名是指在包org.apache.spark這是不可

所以這個我quesiton應當標明其類型的日誌記錄複製

回答

1

我不會依賴於火花SQL 2.0.0火花核心1.6.2在同一時間..調整你的依賴關係。