【问题标题】:Do Spark SQL databases and managed tables persist?Spark SQL 数据库和托管表是否持续存在?
【发布时间】:2022-01-08 05:21:46
【问题描述】:

我是 Spark 的新手,正在阅读 O'Reilly 的书,所以希望我的问题是有意义的。

其中一个练习是创建一个执行以下操作的 Spark 应用程序:

# Create a new DB
spark.sql("CREATE DATABASE learn_spark_db")
spark.sql("USE learn_spark_db")

# Import data and write to a managed table
flights_df = spark.read.csv(csv_file, schema=schema)
flights_df.write.saveAsTable("managed_flights_tbl")

如果我运行一次它可以正常工作,但如果我再次运行它会出现错误:

Can not create the managed table('`managed_flights_tbl`'). The associated location('file:/C:/Users/.../spark-warehouse/learn_spark_db.db/managed_flights_tbl') already exists.;

我正在尝试理解这种行为。看起来数据库和托管表在应用程序完成运行后仍然存在。但是,如果我编写一个单独的应用程序来尝试访问托管表,我会收到“表不存在”错误。

在编写应用程序时,最好在完成表和数据库后删除它们以保持一切“干净”?

有什么方法可以清理外部表“learn_spark_db.managed_flights_tbl”,或者现在应用程序已经完成运行,我无法访问它?

我是不是完全错过了什么……?

【问题讨论】:

  • 什么是独立应用程序?

标签: apache-spark pyspark apache-spark-sql


【解决方案1】:

您至少在使用 Spark 默认目录,因此数据会被持久化,因为您将 spark.sql.catalogImplementation 设置为“hive”。

我们不知道您是如何在其他应用程序中访问该表的。在 Spark 中使用 Hive 而不保存为 Hive 表可能会出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 2023-03-30
    • 2019-07-30
    • 2010-11-04
    • 2020-02-07
    • 1970-01-01
    相关资源
    最近更新 更多