将R数据帧写入Kudu表的有效方法

时间:2019-05-28 07:10:08

标签: r impala apache-kudu

我正在尝试使用Impala将R数据帧写入Kudu表。我已经在Kudu中创建了表格。

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分钟的时间。 sapplylapply花了不到2分钟的时间。搜索了其他有效的上传数据的方法,并提出了将数据框保存到csv或txt文件并使用LOAD DATA语句加载文件的建议。但是从此链接here可以说 LOAD DATA语句不能与Kudu表一起使用。

有人可以建议一种有效的方式将我的数据框上传到Kudu。谢谢

0 个答案:

没有答案