gpt4 book ai didi

scala - 使用 Pyspark 删除表

转载 作者:行者123 更新时间:2023-12-05 07:11:16 26 4
gpt4 key购买 nike

SparkSession.catalog 对象有一堆与元存储交互的方法,即:

['cacheTable',
'clearCache',
'createExternalTable',
'createTable',
'currentDatabase',
'dropGlobalTempView',
'dropTempView',
'isCached',
'listColumns',
'listDatabases',
'listFunctions',
'listTables',
'recoverPartitions',
'refreshByPath',
'refreshTable',
'registerFunction',
'setCurrentDatabase',
'uncacheTable']

不幸的是,似乎没有编程方式来删除表。

有多种方法可以实现这一点

spark.sql(f"drop table my_table")

spark._jsparkSession.sharedState().externalCatalog().dropTable(db, table, True, True)

但与一个简单但仍然缺失的 dropTable 方法相比,它们看起来有点老套?

有没有更好的办法?

最佳答案

AFAIK 从上面提到的方法是最常用的方法。我没有其他感觉..

但我可以从这些中看到另一种方式 docs ...

你可以试试这个 org.apache.spark.sql.hive.HiveUtils它为您提供了好东西(放下 table ..)。

我对 python 不太好,你可以看下面的 scala 示例,并按照与 python 相同的方式进行操作。

package org.apache.spark.sql.hive {
import org.apache.spark.sql.hive.HiveUtils
import org.apache.spark.SparkContext
object utils {
def dropTable(sc: SparkContext, dbName: String, tableName: String, ignoreIfNotExists: Boolean, purge: Boolean): Unit = {
HiveUtils
.newClientForMetadata(sc.getConf, sc.hadoopConfiguration)
.dropTable(dbName, tableName, ignoreIfNotExists, false)
}
}
}

来电者会像

import org.apache.spark.sql.hive.utils
utils.dropTable(sc, "default", "my_table", true, true)

关于scala - 使用 Pyspark 删除表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60837615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com