我有一个简单的 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
Run Code Online (Sandbox Code Playgroud)
我使用的 Spark 版本是 1.3。问题是 hive.execution.engine 的默认设置是“mr”,这使得 Hive 使用 MapReduce 很慢。不幸的是,我不能强迫它使用“火花”。我尝试通过替换 hc = new SQLContext(sc) 来使用 SQLContext 以查看性能是否会提高。有了这个改变线
hc.sql("use myDatabase")
Run Code Online (Sandbox Code Playgroud)
抛出以下异常:
Exception in thread "main" java.lang.RuntimeException: [1.1] failure: ``insert'' expected but identifier use found
use myDatabase
^
Run Code Online (Sandbox Code Playgroud)
Spark 1.3 文档说 SparkSQL 可以使用 Hive 表。我的问题是如何表明我想使用某个数据库而不是默认数据库。