2016-12-06 73 views
5

我正在嘗試使用Java進行簡單的Spark SQL編程。在程序中,我從Cassandra表中獲取數據,將RDD轉換爲Dataset並顯示數據。當我運行​​命令時,出現錯誤:java.lang.ClassNotFoundException: org.apache.spark.internal.Logging使用Spark SQL時未找到Spark Sparkging類

我的計劃是:

SparkConf sparkConf = new SparkConf().setAppName("DataFrameTest") 
     .set("spark.cassandra.connection.host", "abc") 
     .set("spark.cassandra.auth.username", "def") 
     .set("spark.cassandra.auth.password", "ghi"); 
SparkContext sparkContext = new SparkContext(sparkConf); 
JavaRDD<EventLog> logsRDD = javaFunctions(sparkContext).cassandraTable("test", "log", 
     mapRowTo(Log.class)); 
SparkSession sparkSession = SparkSession.builder().appName("Java Spark SQL").getOrCreate(); 
Dataset<Row> logsDF = sparkSession.createDataFrame(logsRDD, Log.class); 
logsDF.show(); 

我的POM依賴關係:

<dependencies> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-core_2.11</artifactId> 
     <version>2.0.2</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-streaming_2.11</artifactId> 
     <version>2.0.2</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.datastax.spark</groupId> 
     <artifactId>spark-cassandra-connector_2.11</artifactId> 
     <version>1.6.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-sql_2.11</artifactId> 
     <version>2.0.2</version> 
    </dependency> 
</dependencies> 

我​​命令是:/home/ubuntu/spark-2.0.2-bin-hadoop2.7/bin/spark-submit --class "com.jtv.spark.dataframes.App" --master local[4] spark.dataframes-0.1-jar-with-dependencies.jar

我怎麼解決這個問題?降級爲1.5.2不起作用1.5.2沒有org.apache.spark.sql.Datasetorg.apache.spark.sql.SparkSession

+1

@T.Gawęda那裏的解決方案對我不起作用,因爲降級到1.5.2,因爲1.5.2沒有'org.apache.spark.sql.Dataset'和'org.apache.spark.sql.SparkSession '。 – khateeb

+0

請檢查連接器版本2.0 - 請參閱https://github.com/datastax/spark-cassandra-connector –

+0

@T.GawędaConnector 2.0仍處於測試階段。我用它,我得到這個錯誤:'NullPointerException異常 \t在org.spark_project.guava.reflect.TypeToken.method(TypeToken.java:465)NullPointerException異常 \t在org.spark_project.guava.reflect.TypeToken.method(TypeToken。的java:465) 在org.apache.spark.sql.SparkSession.getSchema(SparkSession.scala:673) \t在org.apache.spark.sql.SparkSession.createDataFrame(SparkSession.scala:340) \t在有機apache.spark.sql.SparkSession.createDataFrame(SparkSession.scala:359) \t at com.jtv.spark.dataframes.App.main(App.java:25)' – khateeb

回答

0

Spark Sparkging可用於Spark版本1.5.2以及更低版本但不更高版本。所以,你在pom.xml依賴應該是這樣的:

<dependencies> 
    <dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.10</artifactId> 
    <version>1.5.2</version> 
    <scope>provided</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-streaming_2.10</artifactId> 
    <version>1.5.2</version> 
    <scope>provided</scope> 
    </dependency> 
    <dependency> 
    <groupId>com.datastax.spark</groupId> 
    <artifactId>spark-cassandra-connector_2.10</artifactId> 
    <version>1.5.2</version> 
    </dependency> 
    <dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.10</artifactId> 
    <version>1.5.2</version> 
    </dependency> 
</dependencies> 

請讓我知道,如果它與否。

+0

試過了。沒有工作。 1.5.2沒有'org.apache.spark.sql.Dataset'和'org.apache.spark.sql.SparkSession'。 – khateeb

+0

然後對於他們來說,你可以使用更新後的版本和其他舊版本。嘗試一下,讓我知道。 – SachinSarawgi

+0

@Khateeb你是否嘗試過解決方案現在顯示的錯誤。 – SachinSarawgi

0

這可能是您的IDE中的問題。由於這些軟件包中有一些是創建的,而Scala是Java項目,有時IDE不能理解正在發生的事情。我正在使用Intellij,並一直向我顯示此消息。但是,當我嘗試運行「mvn測試」或「mvn包」時,一切都很好。請檢查這是真的是一些軟件包錯誤還是隻是丟失的IDE。

0

下面的依賴對我的情況工作正常。

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.11</artifactId> 
    <version>2.2.0</version> 
    <scope>provided</scope> 
</dependency> 
0

漂亮的晚在這裏聚會,但我加

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.11</artifactId> 
    <version>2.1.1</version> 
    <scope>provided</scope> 
</dependency> 

要解決此問題。似乎爲我的案件工作。

相關問題