Вставьте спарк Dataframe в таблицу разделенных кустов без перезаписи данных - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть один фрейм данных, созданный из таблицы разделов.

Мне нужно вставить этот фрейм данных в уже созданную таблицу секций кустов без перезаписи предыдущих данных.

Я использую partitionBy("columnname"),insertInto("hivetable")но это дает мне возможность не использовать разделыBy и intsertInto одновременно.

1 Ответ

0 голосов
/ 25 сентября 2019

Вы не можете сделать partitionBy с оператором insertInto.PartitionBy разбивает существующие данные на несколько разделов улья.insertInto используется для вставки данных в предопределенный раздел.

Следовательно, вы можете сделать что-то вроде этого

spark.range(10)
.withColumn("p1", 'id % 2)
.write
.mode("overwrite")
.partitionBy("p1")
.saveAsTable("partitioned_table")

val insertIntoQ = sql("INSERT INTO TABLE 
partitioned_table PARTITION (p1 = 4) VALUES 41, 42")

Если вам требуется динамическое добавление разделов, вам нужно установить hive.exec.dynamic.partition .

hiveContext.setConf("hive.exec.dynamic.partition", "true")

hiveContext.setConf("hive.exec.dynamic.partition.mode", "nonstrict")

Я столкнулся с подобной проблемой во время приема данных, я сделал что-то вроде

df.write().mode(SaveMode.Append).partitionBy("colname").saveAsTable("Table")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...