【发布时间】:2016-06-21 18:46:20
【问题描述】:
我有一个简单的 Scala 代码,它从 Hive 数据库中检索数据并从结果集中创建一个 RDD。它适用于 HiveContext。代码类似这样:
val hc = new HiveContext(sc)
val mySql = "select PRODUCT_CODE, DATA_UNIT from account"
hc.sql("use myDatabase")
val rdd = hc.sql(mySql).rdd
我使用的 Spark 版本是 1.3。问题是 hive.execution.engine 的默认设置是“mr”,这使得 Hive 使用很慢的 MapReduce。不幸的是,我不能强迫它使用“火花”。 我尝试通过替换 hc = new SQLContext(sc) 来使用 SQLContext 来查看性能是否会提高。有了这个改变行
hc.sql("use myDatabase")
正在抛出以下异常:
Exception in thread "main" java.lang.RuntimeException: [1.1] failure: ``insert'' expected but identifier use found
use myDatabase
^
Spark 1.3 文档说 SparkSQL 可以使用 Hive 表。我的问题是如何表明我想使用某个数据库而不是默认数据库。
【问题讨论】:
-
您是否尝试过常规的 Hive 语法,即
select * from mydb.mytable? -
是 - 出现另一个错误:java.lang.RuntimeException: Table Not Found: myDatabase.account
标签: database apache-spark hive apache-spark-sql