簡體   English   中英

saveAsTable在Spark-yarn集群環境中失敗

[英]saveAsTable ends in failure in Spark-yarn cluster environment

我設置了一個spark-yarn集群環境,並嘗試使用spark-shell進行spark-SQL:

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

要提到的一件事是Spark在Windows 7中。在成功啟動spark-shell之后,我執行以下命令:

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")

“ show”命令正確返回結果集,但“ saveAsTable”失敗。 錯誤消息顯示:

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集群中,但是您可以看到目錄(C:/jshen.workspace/programs/spark-2.2.0-bin-hadoop2.7/spark-warehouse)是Windows 7中的文件夾,而不是hdfs中的文件夾,甚至在hadoop ubuntu機器中也沒有。

我該怎么辦? 請指教,謝謝。

解決問題的方法是在“保存”操作之前提供“路徑”選項,如下所示:

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

謝謝@philantrovert。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM