分享

大数据集如何转化为RDD

AaronCheung 发表于 2017-11-24 10:49:38 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 7407
本人小白,求助大神!
本人在将单机板的计算程序改写成分布式spark计算程序,由于我的程序需要根据数据集前后两条数据关系进行计算,所以我就将所有的数据经过排序后整理成了一个大的List<Tuple2<Integer,String>>格式的数据集合,把需要按顺序的数据依次拼接写到数据格式中的String里,本来想将这个集合转化成JavaPairRdd后对每个Tuple2进行处理,但是这个数据集太大了,应该会与几十M的数据量大小,所以我的问题是:
1、这个数据集适不适用sc.parallelize()这个方法将数据集转化成PairRdd?
2、将这个数据集转化成HashMap<Integer,String>的形式作为广播变量供各个节点计算使用,这种方法是不是效率更低?
3、如果我将这个数据集写到本地然后再读成RDD呢?
4、或是大神可以指点下Spark处理这种需要前后依赖计算的数据怎么做才更高效?
小白在此谢过!

已有(4)人评论

跳转到指定楼层
xuanxufeng 发表于 2017-11-24 12:15:00
本帖最后由 xuanxufeng 于 2017-11-24 12:16 编辑

思路还是传统思维。你完全可以先读取为rdd,然后在前后两天数据对比。而形成rdd至少有两三种方式,楼主说的是一种。这里楼主的拐点是为何要让别的数据集转换为rdd,而不是直接形成,操作rdd。当然如果你是spark2可以直接使用spark session
回复

使用道具 举报

nextuser 发表于 2017-11-24 19:41:27
1、这个数据集适不适用sc.parallelize()这个方法将数据集转化成PairRdd?
list是可以的,像这样的泛型list,没有尝试过,不过应该没有问题的。可以先形成rdd,然后通过map(x=>x,1),转换为PairRdd
2、将这个数据集转化成HashMap<Integer,String>的形式作为广播变量供各个节点计算使用,这种方法是不是效率更低?
其实你这个数据量不算法,用广播变脸到是也可以,但是不建议这样做,可以用rdd或则DataFrame,就用集合来操作。
3、如果我将这个数据集写到本地然后再读成RDD呢?
这里观点跟1楼主类似,楼主读取后,为何还要放到本地,然后在二次读取,这样明显效率很低。rdd或则DataFrame可以做很多事情。
4、或是大神可以指点下Spark处理这种需要前后依赖计算的数据怎么做才更高效?
spark计算stage本身存在依赖关系,是最合适的了。

回复

使用道具 举报

AaronCheung 发表于 2017-11-28 16:39:03
xuanxufeng 发表于 2017-11-24 12:15
思路还是传统思维。你完全可以先读取为rdd,然后在前后两天数据对比。而形成rdd至少有两三种方式,楼主说的 ...

感谢大神的解答!!!
回复

使用道具 举报

AaronCheung 发表于 2017-11-28 16:40:46
nextuser 发表于 2017-11-24 19:41
1、这个数据集适不适用sc.parallelize()这个方法将数据集转化成PairRdd?
list是可以的,像这样的泛型list ...

感谢大神的解答!!!
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条