Spark程序 "Hello World!"实例

简单介绍第一个程序"Hello World!",就是存储于HDFS的Log文件中计算出"Hello World!"的行数,存储路径为hdfs://root/Log,计算代码如下:

1
2
3
4
5
var  sc = new  SparkContext( "spark://localhost:6030" , "Hello world!" , "YOUR_SPARK_HOME" , "YOUR_APP_JAR" )
var  file  =  sc.textFile( "hdfs:root/Log" )
var  filterRDD  =  file.filter( _ .contains( "Hello World!" ))
filterRDD.cache()
filterRDD.count()

行1对于所有的Spark的程序而言,要进行任何操作前需要创建一个Spark的上下文,在创建上下文的过程中,程序会向集群申请资源以及构建相应的运行环境。一般来说,创建SparkContext对象需要传入四个变量如下:

1
2
3
4
1 、变量就是Spark程序运行的集群地址,如“spark : //localhost:6030”(假设集群在本地启动监听6030端口);
2 、参数是Spark程序的标识;
3 、参数需要指明Spark安装的路径;
4 、参数需要传入Spark程序的jar包路径。


行2通过sc变量利用textFile接口从HDFS文件系统中读取Log文件,返回一个变量file。


行3对于file变量进行过滤操作,传入的参数是一个function对象,function的原型p:(A) => Boolean,对于file中的每行字符串判断是否含有“Hello World!”字符串的文本行数。


行4对filterRdd进行cache操作,以便后续操作重用filterRdd此变量。


行5对filterRdd进行count计数曹总,最后返回包含“Hello World!”字符串的文本行数。


此五行代码涉及了Spark重要的概念,如下:

1、弹性分布式数据集RDD(Resilient Distributed DataSets);


2、创建操作(creation operation):RDD的初始创建都是由SparkContext来负责的,将内存中的集合或者外部文件系统作为输入源;


3、转换操作(transformation operation):将一个RDD通过一定的操作变换成另一个RDD,如file这个RDD通过一个filter操作变换成filterRDD,因此filter就是一个转换操作;


4、控制操作(control operation):对RDD进行持久化,可以让RDD保存在磁盘或者内存中,以便后续重复使用。如cache接口默认将filterRDD缓存在内存中;


5、行动操作(action operation):由于Spark是惰性计算(lazy computing)的,所以对于任何RDD进行行动操作,都会触发Spark作业的运行,从而产生最终的结果。如我们队filterRDD进行的count操作就是一个行动操作。


Spark中的行动操作基本分为两类,一类操作结果变为Scala集合或者标量,另一个就是将RDD报错到外部文件或者数据库中。


转载地址:http://blog.yoodb.com/yoodb/article/detail/216

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值