首页 > 解决方案 > 在 python 中重命名 pyspark/Spark API 中的 Hadoop 服务器表

问题描述

for elem in list:
    final = sqlCtx.read.table('XXX.YYY')
    interim = final.join(elem,'user_id', "fullouter")
    final = interim.select(['user_id'] + [
    spark_combine_first(final[c], elem[c]).alias(c) for c in dup_collect(interim.columns)[0] if c not in ['user_id']] + \
    [c for c in dup_collect(interim.columns)[1] if c not in ['user_id']])

final.write.mode("overwrite").saveAsTable("XXX.temp_test")
final2 = sqlCtx.read.table('XXX.temp_test')

final2.write.mode("overwrite").saveAsTable("XXX.YYY")

这是我的模拟代码,如您所见,我正在从一个表中读取数据,然后最终写入 Hadoop 服务器上的同一个表,但是我收到一个错误,即从同一个表读取时无法覆盖该表。

我找到了一个临时解决方法(通过写入一个临时表,然后将其导入一个新的 DataFrame,最后写入所需的表)但是,这似乎非常低效。

我希望有另一种方法,我可以简单地重命名从 spark API 中创建的 temp_table,但没有取得多大成功。

PS:请忽略缩进,我似乎无法在这里获得正确的格式。

标签: python-2.7apache-sparkhadooppysparksparkapi

解决方案


推荐阅读