spark HW C не может записать в существующую таблицу - PullRequest
1 голос
/ 28 января 2020

В HDP 3.1.0, HW C hive-warehouse-connector-assembly-1.0.0.3.1.0.0-78.jar, я не могу добавить (или перезаписать) существующую таблицу в зависимости от базы данных.

Я протестировал один набор данных с именем DSN, он работает, а с другой базой данных с именем CLEAN_CRYPT он не работает. Обе базы данных зашифрованы + kerberos

import com.hortonworks.spark.sql.hive.llap.HiveWarehouseSession._
import com.hortonworks.spark.sql.hive.llap.HiveWarehouseSession
val hive = com.hortonworks.spark.sql.hive.llap.HiveWarehouseBuilder.session(spark).build()
hive.execute("show databases").show()
hive.setDatabase("clean_crypt")
val df=hive.execute("select * from test")
df.write.format(HIVE_WAREHOUSE_CONNECTOR).option("table","test").mode("append").save

Сообщение об ошибке «таблица уже существует». Я попытался переписать режим без успеха. Если я урону стол, он пройдет !!!

Есть идеи?

1 Ответ

0 голосов
/ 07 мая 2020

Это, вероятно, связано с ошибкой HW C, о которой сообщают несколько пользователей здесь .

Я обнаружил, что она возникает, только если вы пытаетесь использовать partitionBy при записи, например:

df.write.partitionBy("part")
.mode(SaveMode.Overwrite)
.format(com.hortonworks.hwc.HiveWarehouseSession.HIVE_WAREHOUSE_CONNECTOR)
.option("table", "`default`.`testout`").save;

В другой заметке, если вы удалите кусок partitionBy, разбиение будет работать как положено (так как информация о разделе уже хранится в таблице Hive), но если вы используете режим перезаписи (а не, например, добавление), HW C удалит и заново создаст вашу таблицу и не будет повторно применять информацию о секционировании.

...