2017-09-03 3 views
0
で読み取る

I、次のテストコードを持っている:MySQLはPySpark

from pyspark import SparkContext, SQLContext 
sc = SparkContext('local') 
sqlContext = SQLContext(sc) 
print('Created spark context!') 


if __name__ == '__main__': 
    df = sqlContext.read.format("jdbc").options(
     url="jdbc:mysql://localhost/mysql", 
     driver="com.mysql.jdbc.Driver", 
     dbtable="users", 
     user="user", 
     password="****", 
     properties={"driver": 'com.mysql.jdbc.Driver'} 
    ).load() 

    print(df) 

私はそれを実行すると、私は次のエラーを取得:

Scalaで

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

、これは.jarファイルをインポートすることによって解決されるとmysql-connector-javaをプロジェクトに追加します。

しかし、Pythonでは、mysql-connectorファイルをリンクするようにpysparkモジュールに指示する方法はありません。

私は、これは

spark --package=mysql-connector-java testfile.py 

のような例を用いて解決見てきました。しかし、それは奇妙な方法で私のスクリプトを実行するために私を強制するので、私はこれを望んでいません。私は、すべてのpythonの解決策やファイルをどこかにコピーするか、パスに何かを追加したいと思います。 SparkConf前にsparkContextの作成が初期化されるときは、​​に引数を渡すことができ

答えて

1

import os 
from pyspark import SparkConf, SparkContext 

SUBMIT_ARGS = "--packages mysql:mysql-connector-java:5.1.39 pyspark-shell" 
os.environ["PYSPARK_SUBMIT_ARGS"] = SUBMIT_ARGS 
conf = SparkConf() 
sc = SparkContext(conf=conf) 

か、あなたの$SPARK_HOME/conf/spark-defaults.conf

+0

Hiにそれらを追加することができ、私はこのエラーを取得する: '要件は失敗しました:Mavenを提供座標は 'groupId:artifactId:version'の形式でなければなりません。指定された座標は:mysql-connector-java'です。引数は別の形式であると思われます。 –

+0

このmysql:mysql-connector-java:5.1.39によって現在のパッケージを変更してください。それで –

+0

また、 '--jars path_to/mysql-connector-java.jar'でaa jarとしてロードすることもできますが、もしあれば依存関係をインストールしません。私はそれが正しいように答えを修正します – MaFF