从 Spark 执行 Hive 查询
executing Hive queries from 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
at org.apache.spark.sql.hive.HiveContext.runHive(HiveContext.scala:305)
at org.apache.spark.sql.hive.HiveContext.runSqlHive(HiveContext.scala:272)
at org.apache.spark.sql.hive.execution.NativeCommand.sideEffectResult$lzycompute(NativeCommand.scala:35)
at org.apache.spark.sql.hive.execution.NativeCommand.sideEffectResult(NativeCommand.scala:35)
at 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)
at org.apache.spark.sql.SchemaRDDLike$class.$init$(SchemaRDDLike.scala:58)
at org.apache.spark.sql.SchemaRDD.(SchemaRDD.scala:103)
at org.apache.spark.sql.hive.HiveContext.sql(HiveContext.scala:98)
at $iwC$$iwC$$iwC$$iwC.(:14) ...
请帮我解决这个问题。
您的 Hive 库版本可能与您的 Spark 库不兼容。 Spark 期望函数 org.apache.hadoop.hive.ql.Driver.getResults(Ljava/util/ArrayList;)
存在,但在您的 Hive 库中,它不存在。
你可以使用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安装。
我正在尝试在 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 at org.apache.spark.sql.hive.HiveContext.runHive(HiveContext.scala:305) at org.apache.spark.sql.hive.HiveContext.runSqlHive(HiveContext.scala:272) at org.apache.spark.sql.hive.execution.NativeCommand.sideEffectResult$lzycompute(NativeCommand.scala:35) at org.apache.spark.sql.hive.execution.NativeCommand.sideEffectResult(NativeCommand.scala:35) at 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) at org.apache.spark.sql.SchemaRDDLike$class.$init$(SchemaRDDLike.scala:58) at org.apache.spark.sql.SchemaRDD.(SchemaRDD.scala:103) at org.apache.spark.sql.hive.HiveContext.sql(HiveContext.scala:98) at $iwC$$iwC$$iwC$$iwC.(:14) ...
请帮我解决这个问题。
您的 Hive 库版本可能与您的 Spark 库不兼容。 Spark 期望函数 org.apache.hadoop.hive.ql.Driver.getResults(Ljava/util/ArrayList;)
存在,但在您的 Hive 库中,它不存在。
你可以使用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安装。