分享

如何使用RDD的转换去分析复杂一点的数据类型

liuzhixin137 发表于 2016-5-26 11:04:47 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 6902
接上一贴   
        id,           ip,        version   :  有效数据                                 有效数据
362719342,10.4.6.24,4:04,0028,20160203T152325;03,0026,20160203T162324

需要转化成 如下这样的 K-V对

362719342,10.4.6.24,4   04,0028,20160203T152325
362719342,10.4.6.24,4   03,0026,20160203T162324




val text = sc.textFile(path)
val r1 = text.map(_.split(";"))     //这里由于数据格式,后面还可能出现‘;’所有第一次一定要用;分割
val r2 = r1.map(_(0).split(":"))   //Array[Array[String]]   会丢失数据




请问如何解决,好苦恼啊,刚学spark

已有(5)人评论

跳转到指定楼层
starrycheng 发表于 2016-5-26 16:46:12

回帖奖励 +10 云币

楼主数据量是否打,如果不大的话,应该不会丢失。
回复

使用道具 举报

liuzhixin137 发表于 2016-5-26 17:34:09
starrycheng 发表于 2016-5-26 16:46
楼主数据量是否打,如果不大的话,应该不会丢失。

我说的丢失不是因为数据量大小的问题,你看到 用:分割的时候,后面一段的数据就会丢失
回复

使用道具 举报

nextuser 发表于 2016-5-26 19:40:30
一般来说,应该不会丢失。楼主可以检测下程序。
如果有丢失的,日子应该也会报错。
最好能贴上错误信息或则相关的内容,主观性的讨论是否丢失,没有太大意义
回复

使用道具 举报

liuzhixin137 发表于 2016-5-27 09:51:27
nextuser 发表于 2016-5-26 19:40
一般来说,应该不会丢失。楼主可以检测下程序。
如果有丢失的,日子应该也会报错。
最好能贴上错误信息或 ...

362719342,10.4.6.24,4:04,0028,20160203T152325;03,0026,20160203T162324
第一次通过  ;   分割 (val r1 = text.map(_.split(";")) ),得到  一个
Array(  362719342,10.4.6.24,4:04,0028,20160203T152325       03,0026,20160203T162324)


第二次通过  : 分割 (val r2 = r1.map(_(0).split(":")) ),得到一个
Array(  362719342,10.4.6.24,4      04,0028,20160203T152325)

丢失是指  03,0026,20160203T162324  RDD转换过程中这一段有效数据丢失。 我不知道怎么去做有效的转换



回复

使用道具 举报

nextuser 发表于 2016-5-27 17:29:48
liuzhixin137 发表于 2016-5-27 09:51
362719342,10.4.6.24,4:04,0028,20160203T152325;03,0026,20160203T162324
第一次通过  ;   分割 (val  ...

第二次通过  : 分割 (val r2 = r1.map(_(0).split(":")) )改成:
val r2 = r1.map(_.split(";")) )



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条