Spark SQL未显示表格

时间:2019-03-13 15:26:30

标签: apache-spark apache-spark-sql amazon-emr

我在EMR 5.21上使用Spark 2.4.0

我正在使用S3上的分区表-我注意到的是以下内容。

如果我使用以下方法加载数据: spark.read.parquet("s3://my_bucket/my_table").createOrReplaceTempView("my_table");

我可以轻松地执行以下操作: spark.sql("select * from my_table").show并获得结果。 spark.sql("show tables").show的结果中还会显示“ my_table”。

我注意到的是以下无效

scala> spark.sql("show create table my_table").show
org.apache.spark.sql.catalyst.analysis.NoSuchTableException: Table or view 'my_table' not found in database 'default';
  at org.apache.spark.sql.catalyst.catalog.SessionCatalog.requireTableExists(SessionCatalog.scala:185)
  at org.apache.spark.sql.catalyst.catalog.SessionCatalog.getTableMetadata(SessionCatalog.scala:428)
  at org.apache.spark.sql.execution.command.ShowCreateTableCommand.run(tables.scala:915)
  at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:70)

最重要的是,由于我希望分区可用:

scala> spark.sql("msck repair table my_table").show
org.apache.spark.sql.catalyst.analysis.NoSuchTableException: Table or view 'my_table' not found in database 'default';
  at org.apache.spark.sql.catalyst.catalog.SessionCatalog.requireTableExists(SessionCatalog.scala:185)
  at org.apache.spark.sql.catalyst.catalog.SessionCatalog.getTableMetadata(SessionCatalog.scala:428)
  at org.apache.spark.sql.execution.command.AlterTableRecoverPartitionsCommand.run(ddl.scala:600)
  at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:70)
  at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:68)

有帮助吗?就我要完成的工作而言,我将spark.sql.sources.partitionOverwriteMode设置为动态,并使用

    some_df
      .write
      .option("compression", "snappy")
      .format("parquet")
      .mode(SaveMode.Overwrite)
      .insertInto("my_table")

要更新我的S3表上的分区。

0 个答案:

没有答案