Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当取消配置单元数据库中非常大的表的限制时,dbGetQuery会限制_R_Hadoop_Hive_Rjdbc_R Dbi - Fatal编程技术网

当取消配置单元数据库中非常大的表的限制时,dbGetQuery会限制

当取消配置单元数据库中非常大的表的限制时,dbGetQuery会限制,r,hadoop,hive,rjdbc,r-dbi,R,Hadoop,Hive,Rjdbc,R Dbi,全部, 我试图使用RJDBC、rJava和DBI in R包从远程linux机器上的mapr hive/hadoop集群中的一个大型hive表中提取数据 我在连接到配置单元群集时没有任何问题。我试图从中提取数据的表1的大小是500米(百万)行x 16列 这是代码: options(java.parameters = "-Xmx32g" ) library(RJDBC) library(DBI) library(rJava) hive_dir <- "/opt/mapr/hive/hiv

全部,

我试图使用RJDBC、rJava和DBI in R包从远程linux机器上的mapr hive/hadoop集群中的一个大型hive表中提取数据

我在连接到配置单元群集时没有任何问题。我试图从中提取数据的表1的大小是500米(百万)行x 16列

这是代码:

options(java.parameters = "-Xmx32g" )

library(RJDBC)
library(DBI)
library(rJava)

hive_dir <- "/opt/mapr/hive/hive-0.13/lib"
.jinit()
.jaddClassPath(paste(hive_dir,"hadoop-0.20.2-core.jar", sep="/"))
.jaddClassPath(c(list.files("/opt/mapr/hadoop/hadoop-0.20.2/lib",pattern="jar$",full.names=T),
                 list.files("/opt/mapr/hive/hive-0.13/lib",pattern="jar$",full.names=T),
                 list.files("/mapr/hadoop-dir/user/userid/lib",pattern="jar$",full.names=T)))
drv <- JDBC("org.apache.hive.jdbc.HiveDriver","hive-jdbc-0.13.0-mapr-1504.jar",identifier.quote="`")


hive.master <- "xx.xxx.xxx.xxx:10000"
url.dbc <-  paste0("jdbc:hive2://", hive.master)
conn = dbConnect(drv, url.dbc, "user1", "xxxxxxxx")

dbSendUpdate(conn, "set hive.resultset.use.unique.column.names=false")

df <- dbGetQuery(conn, "select *  from dbname.table1 limit 1000000 ") # basically 1 million rows
我在Google上搜索了错误执行错误的最后一部分,从org.apache.hadoop.hive.ql.exec.mr.MapRedTask返回代码1,并试图将这两条语句放在
dbGetQuery
之前,但无法消除错误

dbSendUpdate(conn, "SET hive.auto.convert.join=false")
dbSendUpdate(conn, "SET hive.auto.convert.join.noconditionaltask=false")
当我从select语句中删除限制时,有人知道为什么会出现错误吗?它甚至可以处理1.2亿行,但需要很长时间。在这一点上,所花的时间对我来说并不重要

Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ",  :    Unable to retrieve JDBC result set for select *  from dbname.table1  (Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask)
dbSendUpdate(conn, "SET hive.auto.convert.join=false")
dbSendUpdate(conn, "SET hive.auto.convert.join.noconditionaltask=false")