【问题标题】:Accidently delete derby.log and metastore_db folder in Spark, now tables won't save不小心删除了 Spark 中的 derby.log 和 metastore_db 文件夹,现在表不会保存
【发布时间】:2022-10-18 22:47:29
【问题描述】:

目前,我正在做一个练习,需要在 PySpark 中创建一个数据库和表并使用它们。问题是我之前创建了一个数据库,所以我决定在开始一个新数据库之前删除所有相关的东西(spark-warehouse foldermetastore_db folderderby.log file)。

现在,当我第一次使用以下代码创建一个新数据库和新表时,它就可以工作了。

spark.sql("CREATE DATABASE IF NOT EXISTS asm1_db")
spark.sql("USE asm1_db")

dfQ1.write.bucketBy(2, "Id").mode("overwrite").saveAsTable("asm1_db.tableQ1")
dfA1.write.bucketBy(2, "ParentId").mode("overwrite").saveAsTable("asm1_db.tableA1")

但是表和数据库不会保存。例如下面的代码:

spark.sql("USE asm1_db") => Can't find the database

我必须再次创建数据库,即使这样,表也不会保存

spark.sql("CREATE DATABASE IF NOT EXISTS asm1_db")
spark.sql("USE asm1_db")
spark.sql("select Id from tableq1").show() => Can't find the table tableq1

当我检查 Pycharm 上的文件夹结构时,spark-warehouse folder 和所有 db/tables 仍然存在

我必须再次将整个写入数据运行到表中,但是数据非常大,所以我不想每次都运行它。我知道另存为表方法创建一个永久表, 不是暂时的

我认为问题是因为我之前删除了metastore_db folderderby.log file。那么有没有办法恢复它们呢?我虽然每次创建新数据库时都会重新创建。

【问题讨论】:

    标签: database apache-spark pyspark apache-spark-sql data-warehouse


    【解决方案1】:

    转出 SparkSession 创建代码。您必须添加 .enableHiveSupport()。例如

    spark = SparkSession 
        .builder 
        .master("local[*]") 
        .appName("SparkSQLTableDemo") 
        .enableHiveSupport() 
        .getOrCreate()
    

    【讨论】:

      猜你喜欢
      • 2016-11-17
      • 2017-05-28
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多