在python的pyspark/sparkapi中重命名hadoop服务器表

2j4z5cfb  于 2021-06-01  发布在  Hadoop
关注(0)|答案(0)|浏览(221)
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,最后写入所需的表),但是,这看起来效率非常低。
我希望有另一种方法可以简单地重命名sparkapi中创建的temp\ u表,但没有找到太多成功的方法。
ps:请忽略缩进,我似乎无法得到正确的格式在这里。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题