Записать data.table в базу данных HIVE - производительность - PullRequest
0 голосов
/ 14 апреля 2020

Быстрая версия: у меня есть data.table в R с ~ 8.000.000 строк и 15 столбцов, и я хочу записать его в базу данных HIVE.

Я использую пакет ODB C , но он очень медленный (через 5 часов все еще работает ...). Есть ли другие хорошие варианты для этого, кроме RSpark?

Текущая стратегия:

con <- dbConnect(odbc::odbc(), "Hive")
dbSendQuery(conn = con, statement = "use my_schema")
try(dbRemoveTable(conn = con, name = "table_staging"), silent = T)
dbWriteTable(conn = con, name = "table_staging", 
             value = final)
dbSendQuery(
  conn = con, 
  statement = "INSERT INTO table_prd  PARTITION(aux_dl_process_batch_id = 1) SELECT * FROM table_staging")

Подробнее: Моя финальная таблица (table_prd) уже создана (паркет) и разбита на разделы. Я хочу добавить данные, которые есть в моей среде R, в эту таблицу. Эти данные в виде целых чисел, двойных чисел, символов и дат ...

Я нашел решение создать промежуточную таблицу с помощью dbWriteTable, а затем вставить ее в финальную таблицу ...

Однако производительность dbWriteTable ужасна ... Любые мысли?

PS: я не против RSpark, но мне немного удобнее с ODB C и RJDB C. Если бы вы могли привести хороший пример с RSpark, я был бы счастлив.

...