从Spark执行Hive查询

时间:2015-01-07 16:59:49

标签: hive apache-spark

我正在尝试在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)......

请帮我解决这个问题。

2 个答案:

答案 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安装。