【发布时间】:2018-01-12 02:37:08
【问题描述】:
我正在尝试使用 SparkSession 从 Hive 读取数据。
我的代码:
val warehouseLocation = "/user/xx/warehouse"
val spark = SparkSession .builder() .master("本地[*]") .appName("HiveReceiver") .config("spark.sql.warehouse.dir",warehouseLocation) .enableHiveSupport() .getOrCreate()
导入 spark.sql
sql("select * from sparktest.test").show()
spark.stop()
我的版本:
火花:2.1.1
蜂巢:1.2.1
hadoop:2.7.1
但在 IDEA 中运行时会出现一些异常:
线程“主”java.lang.NoSuchMethodError 中的异常: org.apache.hadoop.hive.metastore.api.Table.setTableName(Ljava/lang/String;)V 在 org.apache.spark.sql.hive.MetastoreRelation.(MetastoreRelation.scala:76) 在 org.apache.spark.sql.hive.HiveMetastoreCatalog.lookupRelation(HiveMetastoreCatalog.scala:142) 在 org.apache.spark.sql.hive.HiveSessionCatalog.lookupRelation(HiveSessionCatalog.scala:70) 在 org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.org$apache$spark$sql$catalyst$analysis$Analyzer$ResolveRelations$$lookupTableFromCatalog(Analyzer.scala:457) 在 org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$8.applyOrElse(Analyzer.scala:479) 在 org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$8.applyOrElse(Analyzer.scala:464) 在 org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveOperators$1.apply(LogicalPlan.scala:61) 在 org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveOperators$1.apply(LogicalPlan.scala:61) 在 org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:70) 在 org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveOperators(LogicalPlan.scala:60) 在 org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$1.apply(LogicalPlan.scala:58) 在 org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$1.apply(LogicalPlan.scala:58) 在 org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$4.apply(TreeNode.scala:307) 在 org.apache.spark.sql.catalyst.trees.TreeNode.mapProductIterator(TreeNode.scala:188) 在 org.apache.spark.sql.catalyst.trees.TreeNode.mapChildren(TreeNode.scala:305) 在 org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveOperators(LogicalPlan.scala:58) 在 org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.apply(Analyzer.scala:464) 在 org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.apply(Analyzer.scala:454) 在 org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1$$anonfun$apply$1.apply(RuleExecutor.scala:85) 在 org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1$$anonfun$apply$1.apply(RuleExecutor.scala:82) 在 scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:124) 在 scala.collection.immutable.List.foldLeft(List.scala:84) 在 org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1.apply(RuleExecutor.scala:82) 在 org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1.apply(RuleExecutor.scala:74) 在 scala.collection.immutable.List.foreach(List.scala:381) 在 org.apache.spark.sql.catalyst.rules.RuleExecutor.execute(RuleExecutor.scala:74) 在 org.apache.spark.sql.execution.QueryExecution.analyzed$lzycompute(QueryExecution.scala:69) 在 org.apache.spark.sql.execution.QueryExecution.analyzed(QueryExecution.scala:67) 在 org.apache.spark.sql.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:50) 在 org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:63) 在 org.apache.spark.sql.SparkSession.sql(SparkSession.scala:592) 在 com.bdp.steaming.HiveReceiver$.main(HiveReceiver.scala:24) 在 com.bdp.steaming.HiveReceiver.main(HiveReceiver.scala)
有人可以告诉错误在哪里吗?
【问题讨论】:
-
谁能告诉我为什么?谢谢。
标签: apache-spark hive