Быстрая версия: у меня есть 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, я был бы счастлив.