org.apache.spark.sql.catalyst.analysis.NoSuchTableException Scala Examples
The following examples show how to use org.apache.spark.sql.catalyst.analysis.NoSuchTableException.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: cache.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.command import org.apache.spark.sql.{Dataset, Row, SparkSession} import org.apache.spark.sql.catalyst.TableIdentifier import org.apache.spark.sql.catalyst.analysis.NoSuchTableException import org.apache.spark.sql.catalyst.plans.QueryPlan import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan case class CacheTableCommand( tableIdent: TableIdentifier, plan: Option[LogicalPlan], isLazy: Boolean) extends RunnableCommand { require(plan.isEmpty || tableIdent.database.isEmpty, "Database name is not allowed in CACHE TABLE AS SELECT") override protected def innerChildren: Seq[QueryPlan[_]] = plan.toSeq override def run(sparkSession: SparkSession): Seq[Row] = { plan.foreach { logicalPlan => Dataset.ofRows(sparkSession, logicalPlan).createTempView(tableIdent.quotedString) } sparkSession.catalog.cacheTable(tableIdent.quotedString) if (!isLazy) { // Performs eager caching sparkSession.table(tableIdent).count() } Seq.empty[Row] } } case class UncacheTableCommand( tableIdent: TableIdentifier, ifExists: Boolean) extends RunnableCommand { override def run(sparkSession: SparkSession): Seq[Row] = { val tableId = tableIdent.quotedString if (!ifExists || sparkSession.catalog.tableExists(tableId)) { sparkSession.catalog.uncacheTable(tableId) } Seq.empty[Row] } } override def makeCopy(newArgs: Array[AnyRef]): ClearCacheCommand = ClearCacheCommand() }
Example 2
Source File: HiveEmulationSuite.scala From HANAVora-Extensions with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution import org.apache.spark.sql.catalyst.analysis.NoSuchTableException import org.apache.spark.sql.hive.SapHiveContext import org.apache.spark.sql.types.StructType import org.apache.spark.sql.{AnalysisException, GlobalSapSQLContext, Row, SapSQLConf} import org.apache.spark.util.DummyRelationUtils._ import org.apache.spark.util.SqlContextConfigurationUtils import org.scalatest.FunSuite class HiveEmulationSuite extends FunSuite with GlobalSapSQLContext with SqlContextConfigurationUtils { private def createTable(name: String, schema: StructType): Unit = sqlc.createDataFrame(sc.parallelize(Seq.empty[Row]), schema).registerTempTable(name) private def withHiveEmulation[A](op: => A): A = withConf(SapSQLConf.HIVE_EMULATION.key, "true")(op) test("Show schemas shows a default schema when hive emulation is on") { withHiveEmulation { val values = sqlc.sql("SHOW SCHEMAS").collect().toSet assertResult(Set(Row("default")))(values) } } test("Show schemas throws if hive emulation is off") { intercept[RuntimeException](sqlc.sql("SHOW SCHEMAS")) } test("Desc an existing table") { withHiveEmulation { createTable("foo", StructType('a.int :: 'b.int :: Nil)) val values = sqlc.sql("DESC foo").collect().toSet assertResult( Set( Row("a", "int", null), Row("b", "int", null)))(values) } } test("Desc a non-existent table throws") { withHiveEmulation { intercept[NoSuchTableException] { sqlc.sql("DESC bar").collect() } } } test("Describe an existing table") { withHiveEmulation { createTable("foo", StructType('a.int :: 'b.int :: Nil)) val values = sqlc.sql("DESCRIBE FORMATTED foo").collect().toList assertResult( List( Row(s"# col_name${" " * 12}\tdata_type${" " * 11}\tcomment${" " * 13}\t"), Row(""), Row(s"a${" " * 19}\tint${" " * 17}\tnull${" " * 16}\t"), Row(s"b${" " * 19}\tint${" " * 17}\tnull${" " * 16}\t")))(values) } } test("Retrieval of a database prefixed table") { val hc = new SapHiveContext(sc) hc.setConf(SapSQLConf.HIVE_EMULATION, true) val expected = Set(Row(0, 0), Row(0, 1), Row(1, 0), Row(1, 1)) val rdd = hc.sparkContext.parallelize(expected.toSeq) hc.createDataFrame(rdd, StructType('a.int :: 'b.int :: Nil)).registerTempTable("foo") val results = hc.sql("SELECT * FROM default.foo").collect().toSet assertResult(expected)(results) hc.setConf(SapSQLConf.HIVE_EMULATION, false) intercept[AnalysisException] { hc.sql("SELECT * FROM default.foo") } } test("USE statements should not do anything when in hive emulation mode") { withConf(SapSQLConf.HIVE_EMULATION.key, "true") { sqlc.sql("USE foo bar") } } test("Any other use command should throw an exception") { intercept[RuntimeException] { sqlc.sql("USE foo bar") } } }
Example 3
Source File: cache.scala From sparkoscope with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.command import org.apache.spark.sql.{Dataset, Row, SparkSession} import org.apache.spark.sql.catalyst.TableIdentifier import org.apache.spark.sql.catalyst.analysis.NoSuchTableException import org.apache.spark.sql.catalyst.plans.QueryPlan import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan case class CacheTableCommand( tableIdent: TableIdentifier, plan: Option[LogicalPlan], isLazy: Boolean) extends RunnableCommand { require(plan.isEmpty || tableIdent.database.isEmpty, "Database name is not allowed in CACHE TABLE AS SELECT") override protected def innerChildren: Seq[QueryPlan[_]] = { plan.toSeq } override def run(sparkSession: SparkSession): Seq[Row] = { plan.foreach { logicalPlan => Dataset.ofRows(sparkSession, logicalPlan).createTempView(tableIdent.quotedString) } sparkSession.catalog.cacheTable(tableIdent.quotedString) if (!isLazy) { // Performs eager caching sparkSession.table(tableIdent).count() } Seq.empty[Row] } } case class UncacheTableCommand( tableIdent: TableIdentifier, ifExists: Boolean) extends RunnableCommand { override def run(sparkSession: SparkSession): Seq[Row] = { val tableId = tableIdent.quotedString try { sparkSession.catalog.uncacheTable(tableId) } catch { case _: NoSuchTableException if ifExists => // don't throw } Seq.empty[Row] } } case object ClearCacheCommand extends RunnableCommand { override def run(sparkSession: SparkSession): Seq[Row] = { sparkSession.catalog.clearCache() Seq.empty[Row] } }
Example 4
Source File: CarbonTruncateCommand.scala From carbondata with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.command.mutation import org.apache.spark.sql.{CarbonEnv, Row, SparkSession} import org.apache.spark.sql.catalyst.analysis.NoSuchTableException import org.apache.spark.sql.execution.command.{DataCommand, TruncateTableCommand} import org.apache.spark.sql.execution.command.management.CarbonCleanFilesCommand import org.apache.spark.sql.hive.CarbonRelation import org.apache.carbondata.common.exceptions.sql.MalformedCarbonCommandException import org.apache.carbondata.common.logging.LogServiceFactory case class CarbonTruncateCommand(child: TruncateTableCommand) extends DataCommand { override def processData(sparkSession: SparkSession): Seq[Row] = { val LOGGER = LogServiceFactory.getLogService(this.getClass.getCanonicalName) val dbName = CarbonEnv.getDatabaseName(child.tableName.database)(sparkSession) val tableName = child.tableName.table setAuditTable(dbName, tableName) val relation = CarbonEnv.getInstance(sparkSession).carbonMetaStore .lookupRelation(Option(dbName), tableName)(sparkSession).asInstanceOf[CarbonRelation] if (relation == null) { throw new NoSuchTableException(dbName, tableName) } if (null == relation.carbonTable) { LOGGER.error(s"Truncate table failed. table not found: $dbName.$child.tableName.table") throw new NoSuchTableException(dbName, child.tableName.table) } if (child.partitionSpec.isDefined) { throw new MalformedCarbonCommandException( "Unsupported truncate table with specified partition") } CarbonCleanFilesCommand( databaseNameOp = Option(dbName), tableName = Option(tableName), truncateTable = true ).run(sparkSession) } override protected def opName = "TRUNCATE TABLE" }
Example 5
Source File: cache.scala From multi-tenancy-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.command import org.apache.spark.sql.{Dataset, Row, SparkSession} import org.apache.spark.sql.catalyst.TableIdentifier import org.apache.spark.sql.catalyst.analysis.NoSuchTableException import org.apache.spark.sql.catalyst.plans.QueryPlan import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan case class CacheTableCommand( tableIdent: TableIdentifier, plan: Option[LogicalPlan], isLazy: Boolean) extends RunnableCommand { require(plan.isEmpty || tableIdent.database.isEmpty, "Database name is not allowed in CACHE TABLE AS SELECT") override protected def innerChildren: Seq[QueryPlan[_]] = { plan.toSeq } override def run(sparkSession: SparkSession): Seq[Row] = { plan.foreach { logicalPlan => Dataset.ofRows(sparkSession, logicalPlan).createTempView(tableIdent.quotedString) } sparkSession.catalog.cacheTable(tableIdent.quotedString) if (!isLazy) { // Performs eager caching sparkSession.table(tableIdent).count() } Seq.empty[Row] } } case class UncacheTableCommand( tableIdent: TableIdentifier, ifExists: Boolean) extends RunnableCommand { override def run(sparkSession: SparkSession): Seq[Row] = { val tableId = tableIdent.quotedString try { sparkSession.catalog.uncacheTable(tableId) } catch { case _: NoSuchTableException if ifExists => // don't throw } Seq.empty[Row] } } case object ClearCacheCommand extends RunnableCommand { override def run(sparkSession: SparkSession): Seq[Row] = { sparkSession.catalog.clearCache() Seq.empty[Row] } }
Example 6
Source File: ClientInterface.scala From iolap with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.hive.client import java.io.PrintStream import java.util.{Map => JMap} import org.apache.spark.sql.catalyst.analysis.{NoSuchDatabaseException, NoSuchTableException} private[hive] case class HiveDatabase( name: String, location: String) private[hive] abstract class TableType { val name: String } private[hive] case object ExternalTable extends TableType { override val name = "EXTERNAL_TABLE" } private[hive] case object IndexTable extends TableType { override val name = "INDEX_TABLE" } private[hive] case object ManagedTable extends TableType { override val name = "MANAGED_TABLE" } private[hive] case object VirtualView extends TableType { override val name = "VIRTUAL_VIEW" } // TODO: Use this for Tables and Partitions private[hive] case class HiveStorageDescriptor( location: String, inputFormat: String, outputFormat: String, serde: String, serdeProperties: Map[String, String]) private[hive] case class HivePartition( values: Seq[String], storage: HiveStorageDescriptor) private[hive] case class HiveColumn(name: String, hiveType: String, comment: String) private[hive] case class HiveTable( specifiedDatabase: Option[String], name: String, schema: Seq[HiveColumn], partitionColumns: Seq[HiveColumn], properties: Map[String, String], serdeProperties: Map[String, String], tableType: TableType, location: Option[String] = None, inputFormat: Option[String] = None, outputFormat: Option[String] = None, serde: Option[String] = None, viewText: Option[String] = None) { @transient private[client] var client: ClientInterface = _ private[client] def withClient(ci: ClientInterface): this.type = { client = ci this } def database: String = specifiedDatabase.getOrElse(sys.error("database not resolved")) def isPartitioned: Boolean = partitionColumns.nonEmpty def getAllPartitions: Seq[HivePartition] = client.getAllPartitions(this) // Hive does not support backticks when passing names to the client. def qualifiedName: String = s"$database.$name" } def reset(): Unit }
Example 7
Source File: cache.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.command import org.apache.spark.sql.{Dataset, Row, SparkSession} import org.apache.spark.sql.catalyst.TableIdentifier import org.apache.spark.sql.catalyst.analysis.NoSuchTableException import org.apache.spark.sql.catalyst.plans.QueryPlan import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan case class CacheTableCommand( tableIdent: TableIdentifier, plan: Option[LogicalPlan], isLazy: Boolean) extends RunnableCommand { require(plan.isEmpty || tableIdent.database.isEmpty, "Database name is not allowed in CACHE TABLE AS SELECT") override protected def innerChildren: Seq[QueryPlan[_]] = plan.toSeq override def run(sparkSession: SparkSession): Seq[Row] = { plan.foreach { logicalPlan => Dataset.ofRows(sparkSession, logicalPlan).createTempView(tableIdent.quotedString) } sparkSession.catalog.cacheTable(tableIdent.quotedString) if (!isLazy) { // Performs eager caching sparkSession.table(tableIdent).count() } Seq.empty[Row] } } case class UncacheTableCommand( tableIdent: TableIdentifier, ifExists: Boolean) extends RunnableCommand { override def run(sparkSession: SparkSession): Seq[Row] = { val tableId = tableIdent.quotedString if (!ifExists || sparkSession.catalog.tableExists(tableId)) { sparkSession.catalog.uncacheTable(tableId) } Seq.empty[Row] } } override def makeCopy(newArgs: Array[AnyRef]): ClearCacheCommand = ClearCacheCommand() }
Example 8
Source File: CatalogTableSourceSuite.scala From parquet-index with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.datasources import org.apache.spark.sql.catalyst.analysis.NoSuchTableException import com.github.lightcopy.testutil.{SparkLocal, UnitTestSuite} import com.github.lightcopy.testutil.implicits._ class CatalogTableSourceSuite extends UnitTestSuite with SparkLocal with TestMetastore { override def beforeAll { startSparkSession() } override def afterAll { stopSparkSession() } test("fail to resolve non-existent table in catalog") { withTempDir { dir => val metastore = testMetastore(spark, dir / "test") val err = intercept[NoSuchTableException] { CatalogTableSource(metastore, "abc", options = Map.empty) } assert(err.getMessage.contains("Table or view 'abc' not found in database")) } } test("fail if source is temporary view and not FileSourceScanExec") { withTempDir { dir => val metastore = testMetastore(spark, dir / "test") val view = "range_view" spark.range(0, 10).createOrReplaceTempView(view) try { val err = intercept[UnsupportedOperationException] { CatalogTableSource(metastore, view, options = Map.empty) } assert(err.getMessage.contains("Range (0, 10")) } finally { spark.catalog.dropTempView(view) } } } test("convert Parquet catalog table into indexed source") { withTempDir { dir => withSQLConf("spark.sql.sources.default" -> "parquet") { val metastore = testMetastore(spark, dir / "test") val tableName = "test_parquet_table" spark.range(0, 10).filter("id > 0").write.saveAsTable(tableName) try { val source = CatalogTableSource(metastore, tableName, options = Map("key" -> "value")) val indexedSource = source.asDataSource indexedSource.className should be ("Parquet") indexedSource.mode should be (source.mode) for ((key, value) <- source.options) { indexedSource.options.get(key) should be (Some(value)) } indexedSource.options.get("path").isDefined should be (true) indexedSource.catalogTable.isDefined should be (true) } finally { spark.sql(s"drop table $tableName") } } } } test("Convert JSON catalog table into indexed source") { // JSON format is supported as CatalogTableInfo, but does not have metastore support withTempDir { dir => withSQLConf("spark.sql.sources.default" -> "json") { val metastore = testMetastore(spark, dir / "test") val tableName = "test_json_table" spark.range(0, 10).write.saveAsTable(tableName) try { val source = CatalogTableSource(metastore, tableName, options = Map("key" -> "value")) val indexedSource = source.asDataSource indexedSource.className should be ("JSON") indexedSource.mode should be (source.mode) for ((key, value) <- source.options) { indexedSource.options.get(key) should be (Some(value)) } indexedSource.options.get("path").isDefined should be (true) indexedSource.catalogTable.isDefined should be (true) } finally { spark.sql(s"drop table $tableName") } } } } }