在SparkSQL中缓存表时出错

时间:2015-07-18 03:44:54

标签: apache-spark hive apache-spark-sql

我正在尝试缓存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]

1 个答案:

答案 0 :(得分:1)

啊哈!我是对的,这似乎是SPARK-8105。所以,现在,你最好的办法是select *并缓存它。