1

以下は、apache spark javaプログラムからoracleローカル・データベースに接続するために使用しているコードですが、エラーが発生しています。javaを使用してoracleデータベースをapache sparkに接続する際のエラー

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/Logging 
at java.lang.ClassLoader.defineClass1(Native Method). 

ここは私のコードです。以下は

​​

POMファイルです。

<dependency> 
    <groupId>com.databricks</groupId> 
    <artifactId>spark-csv_2.11</artifactId> 
    <version>1.5.0</version> 
</dependency> 
<dependency> 
    <groupId>com.univocity</groupId> 
    <artifactId>univocity-parsers</artifactId> 
    <version>2.3.0</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-mllib_2.11</artifactId> 
    <version>2.0.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.11</artifactId> 
    <version>2.0.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.11</artifactId> 
    <version>1.6.1</version> 
</dependency> 
<dependency> 
    <groupId>com.oracle</groupId> 
    <artifactId>ojdbc6</artifactId> 
    <version>11.2.0.3</version> 
</dependency> 
+0

ここにスタックトレースを配置できますか。 実行中にクラスパスに設定されているクラスが不足している可能性があります。 –

+1

[ClassNotFoundException例外の解決/オブジェクトxはApache Sparkのyパッケージのメンバーではありません](http://stackoverflow.com/questions/41383460/resolving-classnotfoundexception-exceptions-object-x-is-not-a) -member-of-packag) – user7337271

答えて

0

あなたはスパークSQLのバージョン1.6を持っているし、2.0にもコア2.0

変更スパークSQLのバージョンをスパーク:

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.11</artifactId> 
    <version>2.0.1</version> 
</dependency> 

スパーク-CSVは、Spark 2、唯一のスパーク1.1にもありますこの機能はSQLプロジェクトに組み込まれています

0

pom.xmlには同じバージョンのsparkライブラリを使用する必要があります。 spark-sqlには1.6.1のバージョンがありますが、spark-corespark-mllibをバージョン2.0.1で使用しています。下のように2.0.1に変更してください。

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.11</artifactId> 
    <version>2.0.1</version> 
</dependency> 

Spark 2.0では、以下のようにSparkSessionで作業できるように別個のsqlContextを作成する必要はありません。

SparkSession spark = SparkSession 
    .builder() 
    .appName("JDBCSample") 
    .master("local[2]") 
    .getOrCreate(); 

以下のように、SparkSessionを使用してデータベースからデータを読み取ることができます。詳細はhereをご確認ください。

Properties connectionProperties = new Properties(); 
connectionProperties.put("user", "username"); 
connectionProperties.put("password", "password"); 
Dataset<Row> jdbcDF2 = spark.read().jdbc("jdbc:postgresql:dbserver", "schema.tablename", connectionProperties); 
+0

私は30秒ほど速かった^^私の答えはSpark CSVでヒントを得ています、あなたのSparkSession –

関連する問題