SparkでJDBCを使用して(Azureの)MS SQLテーブルから読み込み、それをパーケットファイル(ローカルまたはS3)に保存しようとしています。私はこれをローカルで作業していますが、SparkがEC2上にある場合は動作させることができません。コンフィグレーションファイルを使用しない起動時にPySparkにJDBCドライバを追加する
私は手動で私の火花-defaults.confにファイルを開いて、これを追加しますので、私の地元のバージョンが動作します**:
spark.driver.extraClassPath /Users/<my_user>/spark-1.6.1-bin-hadoop2.4/lib/postgresql-9.4.1208.jre6.jar:/Users/<my_user>/spark-1.6.1-bin-hadoop2.4/lib/sqljdbc4.jar
**私はEC2を使用して、この特定のユースケース
ためMSSQL必要がI
wget https://download.microsoft.com/download/0/2/A/02AAE597-3865-456C-AE7F-613F99F850A8/sqljdbc_6.0.7130.100_enu.tar.gz
tar -xf sqljdbc_6.0.7130.100_enu.tar.gz
ls
./spark/bin/pyspark --packages com.databricks:spark-csv_2.11:1.2.0 --driver-class-path "/root/sqljdbc_6.0/enu/sqljdbc4.jar"
その後Pythonの内、私はこれを行うから:
次の操作を行ってみました正しく表示され、それ以来my_jdbc_test.write.save("my_jdbc_test", format="parquet")
No suitable driver found for jdbc:sqlserver://<my_server>.cloudapp.net:<port_num>;DatabaseName=<my_db>;user=<my_user>;password=<my_password>;
:私はドライバのエラーを取得し、寄木細工のファイルとして私のローカルディスクに保存しようとすると、しかし
>>> my_jdbc_test.printSchema()
root
|-- my_var1: string (nullable = true)
|-- my_var2: string (nullable = true)
|-- my_var3: string (nullable = false)
>>>
:正しく
スキーマを表示しますそのスキーマは、jarファイルがマスターに追加されたと仮定していますが、おそらくエラーの原因はワーカーノードにプッシュされていないということですか?私はトンを探して何も見つけることができませんでした。
ありがとうございます。
try:my_jdbc_test.write.save( "my_jdbc_test.parquet"、format = "parquet")? –