2017-10-18 7 views
0

スパーク糸クラスタ環境で失敗に終わり、火花シェルと火花-SQLを試してみてください言及するsaveAsTableは、私が火花糸クラスタ環境を設定

spark-shell --master yarn --deploy-mode client --conf spark.yarn.archive=hdfs://hadoop_273_namenode_ip:namenode_port/spark-archive.zip 

ことの一つは、SparkはWindowsであるあります7.スパーク・シェルが正常に起動した後、私は以下のようにコマンドを実行します。

scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc) 
scala> val df_mysql_address = sqlContext.read.format("jdbc").option("url", "jdbc:mysql://mysql_db_ip/db").option("driver", "com.mysql.jdbc.Driver").option("dbtable", "ADDRESS").option("user", "root").option("password", "root").load() 
scala> df_mysql_address.show 
scala> df_mysql_address.write.format("parquet").saveAsTable("address_local") 

「ショー」コマンドを返しますが正しく設定され、その結果が、「saveAsTableは」失敗に終わります。エラーメッセージは言う:/jshen.workspace/programs/spark-2.2.0-:

java.io.IOException: Mkdirs failed to create file:/C:/jshen.workspace/programs/spark-2.2.0-bin-hadoop2.7/spark-warehouse/address_local/_temporary/0/_temporary/attempt_20171018104423_0001_m_000000_0 (exists=false, cwd=file:/tmp/hadoop/nm-local-dir/usercache/hduser/appcache/application_1508319604173_0005/container_1508319604173_0005_01_000003) 

私は期待して表がHadoopクラスタ内に保存されると思いますが、あなたが見ることができるDIR(Cそのbin-hadoop2.7/spark-warehouse)は、私のWindows 7のフォルダで、hdfsではなく、hadoop ubuntuマシンでもありません。

どうすればいいですか?ありがとう、助けてください。

+1

saveAsTableにHDFSの絶対パスを指定してみましたか? 'saveAsTable(" hdfs:// nn1/user/cloudera/address_local ")のように。 – philantrovert

+0

あなたの提案からインスパイアされた@philantrovertに感謝します。_scala> df_mysql_address.write..option( "path"、 "/ spark-warehouse")_ _ "path" _オプションを提供することです。 .format( "parquet")。saveAsTable( "address_local")_ –

答えて

0

問題を取り除くための方法は、以下のように操作を「保存」する前に「パス」オプションを提供することです:

scala> df_mysql_address.write.option("path", "/spark-warehouse").format("parquet").saveAsTable("address_l‌​ocal") 

おかげで@philantrovert。