在 Spark SQL 中捕获 Table 时出错

Error in Caching a Table in SparkSQL

我正在尝试缓存 Hive 中可用的 Table(使用 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.apply(ClientInterface.scala:112)

table 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]

啊哈!我没看错,这好像是SPARK-8105。因此,目前,您最好的选择是执行 select * 并缓存它。