需要使用spark中的数据库限定符访问Hive表

时间:2015-10-19 18:09:24

标签: scala apache-spark hive

我可以从spark-shell访问hive表,但在提交作为工作的一部分时接收下面指定的异常:

val df = sqlContext.table("dbName.tableName")

线程“main”中的异常org.apache.spark.sql.AnalysisException:临时表不允许指定数据库名称或其他限定符。如果表名中有点(。),请使用反引号(`)引用表名。;

请让我知道如何解决此问题。

1 个答案:

答案 0 :(得分:11)

你不能从sqlContext那样做,你需要为此定义一个HiveContext:

val hiveContext = new HiveContext(sc)
import hiveContext.implicits._
import hiveContext.sql

hive上下文增加了对在MetaStore中查找表并使用HiveQL编写查询的支持。没有现有Hive部署的用户仍可以创建HiveContext。

如果未由hive-site.xml配置,则上下文会自动在当前目录中创建metastore_db和warehouse。

一旦定义了HiveContext,就可以在HiveQL中表达查询。