2016-12-06 25 views
0

PySparkを使用してOracle DBに接続しようとしています。PySparkを使用してOracle DBに接続

spark_config = SparkConf().setMaster(config['cluster']).setAppName('sim_transactions_test').set("jars", "..\Lib\ojdbc7.jar") 

sc = SparkContext(conf=spark_config) 
sqlContext = SQLContext(sc)  

df_sim_input = self.sqlContext.read\ 
         .format("jdbc")\ 
         .option("driver", "oracle.jdbc.driver.OracleDriver")\ 
         .option("url", config["db.url"])\ 
         .option("dbtable", query)\ 
         .option("user", config["db.user"])\ 
         .option("password", config["db.password"])\ 
         .load() 

これは、だから、それはSparkContextでjarファイルを見つけることができないようで、私に

py4j.protocol.Py4JJavaError: An error occurred while calling o31.load. 
: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 

を与えます。 PySparkシェルを外部のjarファイルで読み込むことは可能ですが、PythonコードからPySparkシェルを読み込みたいと思っています。

Pythonからこの外部jarを追加してOracle DBにクエリをどのように追加することができますか?

余分な質問、どのようにpostgresのDBのコードは正常に外部jdbcをインポートせずに動作しますか?それはあなたのシステムにインストールされていると自動的に見つかるからですか?

答えて

1

jarファイルをドライバではなく作業者にのみ送信するため、おそらくdriver-class-pathも設定するべきです。

しかし、PythonコードでJVMを設定するときは、JVMがそれらとともにロードされていることを確認する必要があるので、非常に注意する必要があります(後で追加することはできません)。あなたはPYSPARK_SUBMIT_ARGSなどを設定してみてくださいすることができます

輸出PYSPARK_SUBMIT_ARGS =「 - 瓶jarname --driverクラスパスjarnameのpysparkシェル」

これは、JVMが同じのロードにこれらのオプションを追加するpysparkを教えてくれますコマンドラインで追加した場合は

関連する問題