Я пытаюсь записать свой 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. Спасибо