我正在尝试缓存Hive中可用的表(使用spark-shell
)。以下是我的代码
scala> val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
scala> hiveContext.cacheTable("sparkdb.firsttable")
我得到以下例外
org.apache.spark.sql.catalyst.analysis.NoSuchTableException
at org.apache.spark.sql.hive.client.ClientInterface$$anonfun$getTable$1.apply(ClientInterface.scala:112)
表firsttable
在数据库sparkdb
中可用(在Hive中)。看起来问题似乎在于提供数据库名称。我如何实现这一目标?
PS:如下所示的HiveQL查询可以正常运行
scala> hiveContext.sql("select * from sparkdb.firsttable")
从以下几个方法调用中查找以下结果
scala> hiveContext.tables("sparkdb")
res14: org.apache.spark.sql.DataFrame = [tableName: string, isTemporary: boolean]
scala> hiveContext.tables("sparkdb.firsttable")
res15: org.apache.spark.sql.DataFrame = [tableName: string, isTemporary: boolean]