全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 经管百科 爱问频道
663 0
2019-04-15
描述: 由于数据库从ORCALE数据库迁移到了Hadoop上,现在要获取数据需要读取hive中的数据,通过sparkR链接hive可以执行hql查询,但是结果集过大做as.data.frame的时候报错内存溢出~  数据量大概5000W+ (该方法处理失败)
有同事建议直接将hive表中的数据导出到txt文件中使用R去读文件解决(文件大概10G),对于文本文件的dataframe和原来sql方式有所不同,可能导致整个R脚本要做重写。。

求问:1、对于hive中导出的txt文件是以\t分割的字符串,我怎么可以格式化成和sql查询结果一样,用$字符获取属性的dataframe?
图:
library(SparkR)   
sc <- sparkR.init(appName="SparkR") ---通过sparkR 链接hive 查询hive中的表                                                
sqlContext <- sparkRHive.init(sc)
hn_xqy_bl_out1 <- sql(sqlContext,"SELECT * FROM zl_sjfxpd_db.XQY_EXP_OVDUE_DETAIL") --5000W+ 数据
hn_xqy_bl_out1<-as.data.frame(hn_xqy_bl_out1) --这行格式转换报错内存溢出(spark的dataframe转R的dataframe)
hn_xqy_bl_out<-hn_xqy_bl_out1[,2:16
hn_xqy_bl_out$BORROW_NUM <- as.character(hn_xqy_bl_out$BORROW_NUM)



2、读取文件使用readLines一次读取若干行,这种方式使用对predict 这种函数运行结果有影响么?(因为原来是整个结果集去执行,现在需要分多次读若干行读取)
Flag<- predict(XQY_EXP_OVDUE,hn_xqy_bl_out,type="class") (XQY_EXP_OVDUE sql的执行结果)一次处理


上面这个是一次处理全部sql查询结果,对于这个处理如果分行读取应该怎么修改呢。。。  
hive导出txt文件:



以上者两个问题求大神解答~~    小弟在此跪谢了!  
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群