我正在尝试在spark-shell中执行此代码:
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
sqlContext.sql("show tables")
执行第二行后,我得到一个例外:
java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.Driver.getResults(Ljava / UTIL / ArrayList的;)z 在org.apache.spark.sql.hive.HiveContext.runHive(HiveContext.scala:305) 在org.apache.spark.sql.hive.HiveContext.runSqlHive(HiveContext.scala:272) 在org.apache.spark.sql.hive.execution.NativeCommand.sideEffectResult $ lzycompute(NativeCommand.scala:35) 在org.apache.spark.sql.hive.execution.NativeCommand.sideEffectResult(NativeCommand.scala:35) 在org.apache.spark.sql.hive.execution.NativeCommand.execute(NativeCommand.scala:38) at org.apache.spark.sql.hive.HiveContext $ QueryExecution.toRdd $ lzycompute(HiveContext.scala:360) at org.apache.spark.sql.hive.HiveContext $ QueryExecution.toRdd(HiveContext.scala:360) 在org.apache.spark.sql.SchemaRDDLike $ class。$ init $(SchemaRDDLike.scala:58) 在org.apache.spark.sql.SchemaRDD。(SchemaRDD.scala:103) 在org.apache.spark.sql.hive.HiveContext.sql(HiveContext.scala:98) at $ iwC $$ iwC $$ iwC $$ iwC。(:14)......
请帮我解决这个问题。
答案 0 :(得分:1)
您可能有一个与Spark库不兼容的Hive库版本。 Spark期望函数org.apache.hadoop.hive.ql.Driver.getResults(Ljava/util/ArrayList;)
存在,但在你的Hive库中却没有。
答案 1 :(得分:1)
您可以使用 spark-sql 。
运行配置单元查询:
spark-sql --master yarn --num-executors 6 --executor-memory 2G --executor-cores 1 --driver-memory 5G -e" select * from database.tablename;"
运行配置单元脚本:
spark-sql --master yarn --num-executors 6 --executor-memory 2G --executor-cores 1 --driver-memory 5G -f hivescript.hql
注意:确保hive配置了spark安装。