2016-12-01 9 views
0

私はs3に保存されたpysparkファイルを持っています。私はspark REST APIを使用してそれを実行しようとしています。私は、次のコマンドを実行していますSpark REST API:データソースの検索に失敗しました:com.databricks.spark.csv

curl -X POST http://<ip-address>:6066/v1/submissions/create --header "Content-Type:application/json;charset=UTF-8" --data '{ 
"action" : "CreateSubmissionRequest", 
"appArgs" : [ "testing.py"], 
"appResource" : "s3n://accessKey:secretKey/<bucket-name>/testing.py", 
"clientSparkVersion" : "1.6.1", 
"environmentVariables" : { 
    "SPARK_ENV_LOADED" : "1" 
}, 
"mainClass" : "org.apache.spark.deploy.SparkSubmit", 
"sparkProperties" : { 
"spark.driver.supervise" : "false", 
"spark.app.name" : "Simple App", 
"spark.eventLog.enabled": "true", 
"spark.submit.deployMode" : "cluster", 
"spark.master" : "spark://<ip-address>:6066", 
"spark.jars" : "spark-csv_2.10-1.4.0.jar", 
"spark.jars.packages" : "com.databricks:spark-csv_2.10:1.4.0" 
} 
}' 

とtesting.pyファイルには、コードスニペットがあります。私が手

dataFrame1 = myContext.read.format(format).option("header", "true").option("inferSchema", "true").option("delimiter",",").load(location1).repartition(1) 

myContext = SQLContext(sc) 
format = "com.databricks.spark.csv" 
dataFrame1 = myContext.read.format(format).option("header", "true").option("inferSchema", "true").option("delimiter",",").load(location1).repartition(1) 
dataFrame2 = myContext.read.format(format).option("header", "true").option("inferSchema", "true").option("delimiter",",").load(location2).repartition(1) 
outDataFrame = dataFrame1.join(dataFrame2, dataFrame1.values == dataFrame2.valuesId) 
outDataFrame.write.format(format).option("header", "true").option("nullValue","").save(outLocation) 

をしかし、この行に例外:

java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.csv. Please find packages at http://spark-packages.org 
Caused by: java.lang.ClassNotFoundException: com.databricks.spark.csv.DefaultSource 
私は別のものを試したし、それらのものの一つは、私は、IPアドレスのマシンにログインして、このコマンドを実行したということでした

./bin/spark-shell --packages com.databricks:spark-csv_2.10:1.4.0 

それは.ivy2で火花csvファイルをダウンロードなるように/キャッシュフォルダ。しかし、それは問題を解決しませんでした。私は間違って何をしていますか?

+0

こんにちはシャー​​シ、以下の答えに質問があります - あなたはそれに答えることができますか?ありがとう。 – halfer

答えて

1

(OPの代わりに掲示)

私は最初にドライバとワーカーマシンにspark-csv_2.10-1.4.0.jarを追加しました。私を解決しを

"spark.driver.extraClassPath" : "/absolute/path/to/spark-csv_2.10-1.4.0.jar:/absolute/path/to/commons-csv-1.4.jar", 
"spark.executor.extraClassPath" : "/absolute/path/to/spark-csv_2.10-1.4.0.jar:/absolute/path/to/commons-csv-1.4.jar", 

を:

java.lang.NoClassDefFoundError: org/apache/commons/csv/CSVFormat 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.csv.CSVFormat 

そして、私は両方のマシン上コモンズ-CSV-1.4.jarを追加して、コメントを追加:と

"spark.driver.extraClassPath" : "absolute/path/to/spark-csv_2.10-1.4.0.jar", 
"spark.executor.extraClassPath" : "absolute/path/to/spark-csv_2.10-1.4.0.jar", 

その後、私は、次のエラーを得たを追加しました問題。

+0

私は[spark-jobserver]を使用していますが、同様の問題に直面しています。私は 'libraryDependencies + =" com.databricks "%" spark-csv_2.10 "%" 1.4.0 " libraryDependencies + =" org.apache.commons "%" commons-csv "%" 1.4 "'をプラグインに追加しました。 sbtファイルがそれを助けていない。他の入力?ありがとう – Nagesh

+0

私はこのリンクが役立つはずだと思う:https://github.com/spark-jobserver/spark-jobserver#dependency-jars 依存関係のあるjar-urisを使うことを選んだ場合は、 (私はあなたがワーカーマシンにアップロードする必要があるかどうか分かりません) ジョブサーバーを使用中に自分自身の依存関係を追加しようとしたことはありませんでしたが、これはうまくいくはずです –

+0

@Nagesh、Shashi Kのコメントを参照してください。 – halfer

関連する問題