2017-05-01 10 views
2

AWS EMR、 に火花を使用してOracleデータベースからデータを読み込もうとしますが、私はこのエラーメッセージ取得しています:火花 - にjava.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriverと

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver.

誰かがこの問題に直面し、どのように解決したかを教えてもらえますか?

pyspark --driver-class-path /home/hadoop/ojdbc7.jar --jars /home/hadoop/ojdbc7.jar 

from pyspark import SparkContext, HiveContext, SparkConf 

from pyspark.sql import SQLContext 

sqlContext = SQLContext(sc) 

df = sqlContext.read.format("jdbc").options(url="jdbc:oracle:thin:user/[email protected]//10.200.100.142:1521/BMD", driver = "oracle.jdbc.driver.OracleDriver", 
dbtable="S_0COORDER_TEXT_D").load() 

答えて

1

あなたが使用しているスパークのバージョンを言及していないが...あなたは、両方のドライバ&キュータに....以下

輸入瓶を試すことができます。したがって、以下の両方の行を追加してconf/spark-defaults.confを編集する必要があります。

spark.driver.extraClassPath /home/hadoop/ojdbc7.jar 
spark.executor.extraClassPath /home/hadoop/ojdbc7.jar 

または
あなたは、たとえば以下のようなジョブを送信しながら、渡すことを試みることができます:

--conf spark.driver.extraClassPath /home/hadoop/ojdbc7.jar 
--conf spark.executor.extraClassPath /home/hadoop/ojdbc7.jar 
+0

スパーク2.0.0バージョンを使用しています。 conf/spark-defaults.confのドライバとエグゼキュータの両方にjarファイルを追加しましたが、私はまだ同じ問題に直面しています。 py4j.protocol.Py4JJavaError:o54.loadの呼び出し中にエラーが発生しました。 :java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver – KiranK

+0

2番目のアプローチ、つまり--confを試してみましたか? –

+0

私はpyspark --jars /home/hadoop/ojdbc7.jarを試しました。--conf spark.driver.extraClassPath =/home/hadoop/ojdbc7.jar --conf spark.executor.extraClassPath =/home/hadoop/ojdbc7。瓶、まだ同じ問題。 – KiranK

1

は「は/ opt /モジュール/ extraClass、your_spark_home_path/confに/火花-defaults.confにに以下のコードを追加します/瓶

spark.driver.extraClassPath = /opt/modules/extraClass/jodbc7.jar 
spark.executor.extraClassPath = /opt/modules/extraClass/jodbc7.jar 

か、簡単な追加jodbc7.jarはyour_spark_home_pathすることができます:/」私は余分なjarファイルを置くディレクトリです。