aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHuaxin Gao <huaxing@oc0558782468.ibm.com>2015-11-19 13:08:01 -0800
committerMichael Armbrust <michael@databricks.com>2015-11-19 13:08:01 -0800
commit4700074530d9a398843e13f0ef514be97a237cea (patch)
treecc5fdc622caa0a4a66bc0b145ade00de82e753e1
parent47d1c2325caaf9ffe31695b6fff529314b8582f7 (diff)
downloadspark-4700074530d9a398843e13f0ef514be97a237cea.tar.gz
spark-4700074530d9a398843e13f0ef514be97a237cea.tar.bz2
spark-4700074530d9a398843e13f0ef514be97a237cea.zip
[SPARK-11778][SQL] parse table name before it is passed to lookupRelation
Fix a bug in DataFrameReader.table (table with schema name such as "db_name.table" doesn't work) Use SqlParser.parseTableIdentifier to parse the table name before lookupRelation. Author: Huaxin Gao <huaxing@oc0558782468.ibm.com> Closes #9773 from huaxingao/spark-11778.
-rw-r--r--sql/core/src/main/scala/org/apache/spark/sql/DataFrameReader.scala3
-rw-r--r--sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveDataFrameAnalyticsSuite.scala10
2 files changed, 12 insertions, 1 deletions
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/DataFrameReader.scala b/sql/core/src/main/scala/org/apache/spark/sql/DataFrameReader.scala
index 5872fbded3..dcb3737b70 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/DataFrameReader.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/DataFrameReader.scala
@@ -313,7 +313,8 @@ class DataFrameReader private[sql](sqlContext: SQLContext) extends Logging {
* @since 1.4.0
*/
def table(tableName: String): DataFrame = {
- DataFrame(sqlContext, sqlContext.catalog.lookupRelation(TableIdentifier(tableName)))
+ DataFrame(sqlContext,
+ sqlContext.catalog.lookupRelation(SqlParser.parseTableIdentifier(tableName)))
}
/**
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveDataFrameAnalyticsSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveDataFrameAnalyticsSuite.scala
index 9864acf765..f19a74d4b3 100644
--- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveDataFrameAnalyticsSuite.scala
+++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveDataFrameAnalyticsSuite.scala
@@ -34,10 +34,14 @@ class HiveDataFrameAnalyticsSuite extends QueryTest with TestHiveSingleton with
override def beforeAll() {
testData = Seq((1, 2), (2, 2), (3, 4)).toDF("a", "b")
hiveContext.registerDataFrameAsTable(testData, "mytable")
+ hiveContext.sql("create schema usrdb")
+ hiveContext.sql("create table usrdb.test(c1 int)")
}
override def afterAll(): Unit = {
hiveContext.dropTempTable("mytable")
+ hiveContext.sql("drop table usrdb.test")
+ hiveContext.sql("drop schema usrdb")
}
test("rollup") {
@@ -74,4 +78,10 @@ class HiveDataFrameAnalyticsSuite extends QueryTest with TestHiveSingleton with
sql("select a, b, sum(b) from mytable group by a, b with cube").collect()
)
}
+
+ // There was a bug in DataFrameFrameReader.table and it has problem for table with schema name,
+ // Before fix, it throw Exceptionorg.apache.spark.sql.catalyst.analysis.NoSuchTableException
+ test("table name with schema") {
+ hiveContext.read.table("usrdb.test")
+ }
}