Эффективный способ записи R-данных в таблицу Kudu - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь записать свой R-кадр данных в таблицу Kudu, используя Impala. Я создал таблицу в Куду.

library(RJDBC)
library(implyr)

drv <- JDBC("com.cloudera.impala.jdbc41.Driver","/path/ImpalaJDBC41.jar",identifier.quote="`")  
conn <- dbConnect(drv,"username/password")

dbSendUpdate(conn, paste("CREATE TABLE default.sample (id bigint,eventdate timestamp)",";"))

dbWriteTable(conn, 'default.sample', df) #this gives error

dbWriteTable выдавал ошибку, поэтому я попытался вставить значения с помощью оператора INSERT INTO.

sam_data <- paste0("INSERT INTO default.sample VALUES (", apply(df[1:100,], 1, function(x) paste(x, collapse = ",")), ")" )
lapply(sam_data, function(x) RJDBC::dbSendUpdate(conn, x))

Я вставил выборку из 100 строк с моего кадра данных, и это сработало, но для загрузки 100 наблюдений потребовалось около 6 минут. sapply заняло на 2 минуты меньше, чем lapply. Искал другие эффективные способы выгрузки данных, и были предложения сохранить фрейм данных в файл CSV или TXT и загрузить файл с помощью оператора LOAD DATA. Но по этой ссылке здесь там написано Оператор LOAD DATA нельзя использовать с таблицами Kudu.

Может кто-нибудь предложить эффективный способ загрузки моего кадра данных в Kudu. Спасибо

...