在 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 *
并缓存它。
我正在尝试缓存 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 *
并缓存它。