【发布时间】: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