gpt4 book ai didi

apache-spark - sparksql 删除配置单元表

转载 作者:行者123 更新时间:2023-12-02 06:52:34 26 4
gpt4 key购买 nike

我想通过 sparksql 删除一个配置单元表。

在安装了 hadoop 2.6、hive 2.0、spark 1.6 和 spark 2.0 的集群中。我在两个版本的 pyspark shell 和 spark-submit 作业中尝试了以下代码。

sqlContext.sql('drop table test')  //spark 1.6
spark.sql('drop table test') //spark 2.0

两个代码在 pyspark-shell 中都可以正常工作,我可以从 hive cli 中看到 测试 表不再存在。

但是,如果代码在 python 文件中,然后使用 spark-submit 提交到集群,则代码永远不会生效。

spark 2.0 甚至给出了错误
pyspark.sql.utils.AnalysisException: u"Table to drop '`try`' does not exist;"

我已复制 hive-site.xml 进入spark中的conf目录。

通过 sparksql 删除配置单元表的正确方法是什么?

更新:

我尝试比较了 spark-shell 和我使用以下代码提交的作业之间的 spark 环境
spark-submit --master yarn --deploy-mode cluster try_spark_sql.py

在spark-shell环境下,可以看到 spark.sql.catalog实现设置为 hive

在使用上述代码提交的作业中。环境不包含 spark.sql.catalog实现
我尝试使用以下代码设置它:
spark = SparkSession.builder.appName("PythonSQL").config("spark.sql.catalogImplementation","hive").

但它对环境没有任何影响。

我发现的一种解决方法是使用 提交作业。客户模式而不是 集群 模式。那么hive表就可以成功删除了。

最佳答案

当您使用 PySpark shell 时,Spark 具有内置的 Hive 支持,默认的 SQLContext 实现(可用作 sqlContext)是 HiveContext。

在您的应用程序中,如果您使用不提供 Hive 功能的普通 SQLContext。

请按以下步骤操作,它应该可以工作。

from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)
sqlContext.sql('drop table test')

关于apache-spark - sparksql 删除配置单元表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39787792/

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