了解了spark编程的基本概念,可以看出spark编程都是围绕着RDD进行的。关于编程的基础知识,可以参看
Spark1.0.0 编程模型
。
spark目前支持scala、python、JAVA编程。
作为spark的原生语言,scala是开发spark应用程序的首选,其优雅简洁的函数式代码,令开发过mapreduce代码的码农感觉象是上了天堂。
spark也提供了python的编程模型PySpark,使得python可以作为spark开发语言之一。尽管现在PySpark还不能支持所有的spark API,但是我们相信以后的支持度会越来越高;同时作为NOSQL的主力开发工具之一的python,一旦将NOSQL和spark结合后,我们可以想象以后的发展前景。
至于JAVA,时间和精力允许的情况下再选吧。不过作为长期坐着写代码的码农,应该积极参加登山、会友之类的活动,为身体着想,还是不要选JAVA来编写spark程序了。
废话了一堆,还是进行spark的编程实践。
1:开发环境
含有3台虚拟机组成的集群和一台物理机客户端组成。集群中含有hadoop2.2.0集群和Spark1.1.0集群,客户端含有IntelliJ IDEA。
2:实验项目
sogou日志数据分析
实验数据来源:
sogou精简版数据下载地址
数据格式说明:
访问时间\t用户ID\t[查询词]\t该URL在返回结果中的排名\t用户点击的顺序号\t用户点击的URL
其中,用户ID是根据用户使用浏览器访问搜索引擎时的Cookie信息自动赋值,即同一次使用浏览器输入的不同查询对应同一个用户ID。
以上数据格式是官方说明,实际上该数据集中排名和顺序号之间不是\t分割,而是空格分割。
实验数据下载解压后上传到hdfs://hadoop1:8000/dataguru/data/mini.txt
实验项目:
A:用户在00:00:00到12:00:00之间的查询数
B:搜索结果排名第1,但是点击次序排在第2的数据有多少?
C:一个session内查询次数最多的用户的session与相应的查询次数
3:多语言编程实现