【问题标题】:Spark submit throws error while using Hive tables使用 Hive 表时 Spark 提交引发错误
【发布时间】:2016-09-17 14:58:36
【问题描述】:

我有一个奇怪的错误,我正在尝试将数据写入配置单元,它在 spark-shell 中运行良好,但是当我使用 spark-submit 时,它抛出默认错误中找不到数据库/表。

以下是我尝试在 spark-submit 中编写的编码,我使用的是 spark 2.0.0 的自定义构建

 val sqlContext = new org.apache.spark.sql.SQLContext(sc)
sqlContext.table("spark_schema.iris_ori")

以下是我正在使用的命令,

/home/ec2-user/Spark_Source_Code/spark/bin/spark-submit --class TreeClassifiersModels --master local[*] /home/ec2-user/Spark_Snapshots/Spark_2.6/TreeClassifiersModels/target/scala-2.11/treeclassifiersmodels_2.11-1.0.3.jar /user/ec2-user/Input_Files/defPath/iris_spark SPECIES~LBL+PETAL_LENGTH+PETAL_WIDTH RAN_FOREST 0.7 123 12

以下是错误,

16/05/20 09:05:18 信息 SparkSqlParser:解析命令:spark_schema.measures_20160520090502 线程“主”org.apache.spark.sql.AnalysisException 中的异常:数据库“spark_schema”不存在; 在 org.apache.spark.sql.catalyst.catalog.ExternalCatalog.requireDbExists(ExternalCatalog.scala:37) 在 org.apache.spark.sql.catalyst.catalog.InMemoryCatalog.tableExists(InMemoryCatalog.scala:195) 在 org.apache.spark.sql.catalyst.catalog.SessionCatalog.tableExists(SessionCatalog.scala:360) 在 org.apache.spark.sql.DataFrameWriter.saveAsTable(DataFrameWriter.scala:464) 在 org.apache.spark.sql.DataFrameWriter.saveAsTable(DataFrameWriter.scala:458) 在 TreeClassifiersModels$.main(TreeClassifiersModels.scala:71) 在 TreeClassifiersModels.main(TreeClassifiersModels.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:497) 在 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:726) 在 org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:183) 在 org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:208) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:122) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

【问题讨论】:

  • 能否粘贴错误信息、hive-site.xml 和 spark-submit commad?
  • hi @user1314742 添加了命令和错误信息
  • 在您提供的代码中,我看不到您在哪里使用了导致问题的数据库iaw_model_summary
  • 对不起,它的 spark_schema 只是,iaw_model_summary 是另一个数据库,它也无法正常工作。它是spark_schema 的替代品。我更改了架构名称并测试了它是否工作。
  • 您的数据库保存在哪里?在调用它们之前你确定它们存在吗?

标签: apache-spark hive spark-dataframe


【解决方案1】:

问题是因为 Spark 版本 2.0.0 上发生了弃用。在 Spark 2.0.0 中不推荐使用 Hive 上下文。要在 Spark 2.0.0 上读取/写入 Hive 表,我们需要使用 Spark 会话,如下所示。

val sparkSession = SparkSession.withHiveSupport(sc)

【讨论】:

  • 我成功使用了 val spark = SparkSession.builder().enableHiveSupport().getOrCreate()
猜你喜欢
  • 2016-08-23
  • 1970-01-01
  • 2020-02-02
  • 2023-03-26
  • 2016-09-07
  • 1970-01-01
  • 2023-04-10
  • 2020-03-30
  • 2020-12-30
相关资源
最近更新 更多