Я использую Spark 2.4.0 на EMR 5.21
Я работаю с секционированной таблицей на 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.