【问题标题】:saveAsTable ends in failure in Spark-yarn cluster environmentsaveAsTable 在 Spark-yarn 集群环境中以失败告终
【发布时间】:2017-10-18 11:18:32
【问题描述】:

我搭建了一个 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 机器中也没有。

我该怎么办?请指教,谢谢。

【问题讨论】:

  • 您是否尝试将 HDFS 的绝对路径提供给 saveAsTable?喜欢saveAsTable("hdfs://nn1/user/cloudera/address_local")
  • 感谢@philantrovert,受到您的建议的启发。我找到了正确的方法,即在 "save" 操作之前提供 "path" 选项: scala> df_mysql_address.write..option ("path", "/spark-warehouse").format("parquet").saveAsTable("address_local")

标签: apache-spark apache-spark-sql


【解决方案1】:

解决问题的方法是在“保存”操作之前提供“路径”选项,如下所示:

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

感谢@philantrovert。

【讨论】:

    猜你喜欢
    • 2015-11-06
    • 2018-03-31
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多