1

Ниже приведен код, который я использую для подключения к локальной базе данных оракула из программы apache spark java, но я становлюсь ниже ошибки.Ошибка в подключении базы данных оракула к искры apache с использованием java

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

Вот мой код.

public static void main(String[] args) { 
    JavaSparkContext sc = new JavaSparkContext(new SparkConf().setAppName("SparkJdbcDs").setMaster("local[*]")); 
    SQLContext sqlContext = new SQLContext(sc); 
    Map<String, String> options = new HashMap<String, String>(); 
    options.put("url", "jdbc:oracle:thin:@//192.168.2.85:1521/stage"); 
    options.put("dbtable", "AD_TABLES.brands"); 
    DataFrame jdbcDF = sqlContext.read().format("jdbc").options(options).load(); 
} 

Ниже представлен файл 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 не является членом пакета y в Apache Spark] (http://stackoverflow.com/questions/41383460/resolving-classnotfoundexception-exceptions-object-x-is-not-a -member-of-packag) – user7337271

ответ

0

Вы Спарк SQL версии 1.6 и Спарк Сердечник 2,0

Изменение Спарк SQL версия также 2.0:

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

искровым CSV также только для искрового 1.x, Спарк 2 имеет эту функциональность, встроенную в проект SQL

0

Вы должны использовать ту же версию библиотек искры в вашем pom.xml. вы используете spark-core и spark-mllib с версией 2.0.1, а ваш spark-sql имеет версию 1.6.1. Измените его на 2.0.1, как показано ниже.

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

С Спарк 2.0 вам не нужно создавать отдельный sqlContext, как вы можете работать с SparkSession, как показано ниже.

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 –