Переименование серверных таблиц Hadoop в pyspark / Spark API в python - PullRequest
0 голосов
/ 17 октября 2018
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 и, наконец, записав в требуемую таблицу), но это выглядит как супер неэффективный.

Я надеялся на другой подход, с помощью которого я мог бы просто переименовать temp_table, созданный из API-интерфейса spark, но не добился большого успеха.

PS: Пожалуйста, игнорируйте отступ, я не могу показатьсячтобы получить правильное форматирование здесь.

...