首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不小心删除星火中的derby.log和metastore_db文件夹,现在表将不保存

不小心删除星火中的derby.log和metastore_db文件夹,现在表将不保存
EN

Stack Overflow用户
提问于 2022-10-10 11:46:52
回答 1查看 25关注 0票数 0

目前,我正在进行一项练习,要求在PySpark中创建数据库和表,并使用它们。问题是我之前创建了一个数据库,所以我决定在启动新的数据库之前删除所有相关的内容(spark-warehouse foldermetastore_db folderderby.log file)。

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

代码语言:javascript
复制
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")

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

代码语言:javascript
复制
spark.sql("USE asm1_db") => Can't find the database

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

代码语言:javascript
复制
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/table仍然存在

我必须再次对表运行整个写数据,但是数据非常大,所以我不想每次都运行它。我知道saveAsTable方法创建了一个永久表,而不是临时

我认为问题是因为我删除了之前的metastore_db folderderby.log file。那么还有什么可以恢复的吗?我想,每次创建新数据库时,它都会重新创建。

EN

回答 1

Stack Overflow用户

发布于 2022-10-18 14:47:29

在SparkSession创建代码中生成。您必须添加.enableHiveSupport()。例如

代码语言:javascript
复制
spark = SparkSession \
    .builder \
    .master("local[*]") \
    .appName("SparkSQLTableDemo") \
    .enableHiveSupport() \
    .getOrCreate()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74014445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档