欢迎来到魔据教育大数据学院,专注大数据工程师培养!
当前位置:首页 > 学习资料 > 讲师博文 > Spark javardd入门

Spark javardd入门

时间:2017-08-17 17:55:48作者:华腾

9-1.png

 

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。SPARK不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
 
Spark 是在 Scala 语言中实现的,但提供scala、java、python、hivesql等语音开发接口。并且Spark 提供了大量的库,包括SQL、DataFrames、MLlib、GraphX、Spark Streaming。
 
Spark建立在统一抽象的RDD(Resilient Distributed Datasets)之上。RDD是弹性分布式数据集,即分布式的元素集合。在spark中,对所有数据的操作都是创建RDD、转化已有的RDD以及调用RDD操作进行求值。在这一切的背后,Spark会自动将RDD中的数据分发到集群中,并将操作并行化。用java实现的rdd称为javardd,本文主要为大家介绍用java实现的spark程序javardd。
 
使用javardd的好处,对应经常使用java的人员学习成本较低上手spark较快。劣势,没有scala编写简洁。
 
以下是javardd常用的几个方法:
1、map(func):对每行数据使用func,然后返回一个新的RDD,数据处理-每行。
2、filter(func):对每行数据使用func,然后返回func后为true的数据,用于过滤。
3、flatMap(func):和map差不多,但是flatMap生成的是多个结果,用于行转列。
4、groupByKey(numTasks):返回(K,Seq[V]),也就是Hadoop中reduce函数接受的
key-valuelist
5、reduceByKey(func,[numTasks]):就是用一个给定的reduce func再作用在groupByKey产
生的(K,Seq[V]),比如求和,求平均数
6、sortByKey([ascending],[numTasks]):按照key来进行排序,是升序还是降序,ascending
是boolean类型
 
接下来为大家以代码案例的形式介绍每个方法的用法,spark分为转换因子和执行因子,转换因子为对javardd进行数据格式转换。执行因子为确定数据执行方式。Spark为懒惰式,如果没有执行因子程序是不执行的。
 
代码案例-转换因子
 

9-2.png

首先加载数据,加载hdfs数据
JavaRDD<String> baseLines = ctx.textFile(“hdfs:///dx/basic”);
1) Map,用例为数据加上日期标识
JavaRDD<String> filedata = baseLines.map(new Function<String, String>() {
@Override
public String call(String s) {
s = s + “|20170101”;
return s;
}
});
2) Filter,用例提取包含jpg的图片地址
JavaRDD<String> fileclear = baseLines.filter(new Function<String, Boolean>() {
@Override
public Boolean call(String s) {
if (s.indexOf(“.jpg”)>=0) {
return true;
}
return false;
}
});
3) flatMap,行转列
JavaRDD<String> words = baseLines.flatMap(new FlatMapFunction<String, String>() {
@Override
public Iterator<String> call(String s) {
return Arrays.asList(SPACE.split(s)).iterator();
}
});
元数据格式
1 2 3 4 5
转换后格式
1
2
3
4
5
4) groupByKey
将数据进行按key分组
JavaPairRDD<String, String> userpropv = baseLines
.mapToPair(new PairFunction<String, String, String>() {
@Override
public Tuple2<String, String> call(String s) throws Exception {
String[] str = s.split(“,”);
//产品id+用户号码作为key
return new Tuple2<>(str[2], "1");
}
});
 
JavaPairRDD<String, Iterable<String>> dxgroupedPairs = userpropv.groupByKey();

9-3.png

5) reduceByKey
作用于groupByKey产生的value上比如求和求平均值。
JavaPairRDD<String, Integer> counts =
userpropv.reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer i1, Integer i2) {
    return i1 + i2;
  }
});
6) sortByKey,第二个参数true升序、false降序
JavaRDD< String > resultRDD = baseLines.sortBy(
new Function<String, Object>() {
@Override
public Object call(String v1) throws Exception {
return v1;
}
}, false, 1);
 
代码案例-执行因子
1、saveAsTextFile 数据保存
resultRDD..saveAsTextFile(“/outpath”)
2、collect()小结果集数组转换
   List<String> list = resultRDD. collect();
 
以上是spark javardd常用因子,在一般程序中较为常用的。
 
参考地址:http://spark.apache.org/docs/latest/api/java/index.html

更多大数据相关资讯敬请关注魔据教育,为您分享最及时的大数据资讯。
学习大数据敬请关注魔据教育微信二维码。
魔据教育微信二维码

【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发邮件至kefu@mojuedu.com,我们将及时沟通与处理。本站内容除非来源注明魔据教育,否则均为网友转载,涉及言论、版权与本站无关。

全国咨询热线:18501996998,值班手机:18501996998(7*24小时)

在线咨询:张老师QQ 320169340

企业合作服务专线:010-82340234-821, 院校合作洽谈专线:010-82340234

Copyright 2001-2019 魔据教育 - 北京华育兴业科技有限公司 版权所有,京ICP备17018991号-2

免费在线咨询立即咨询

免费索取技术资料立即索取

大数据技术交流QQ:226594285

电话咨询010-82340234