微信号:grzlwx

介绍:光荣之路官方资讯

手把手教你Spark&Mongodb『附源码下载』(下)

2018-02-04 22:00 Hurry Han

新书

速递


吴老的java版《selenium webdriver 实战宝典》和python版《selenium Webdriver 3.0 自动化测试框架实战指南》出版了,代码拿来就能用。

  文 | Hurry Han

阅读提示:手把手教你Spark&Mongodb『附源码下载』(上)

spark已经成为最流行的大数据处理引擎之一,本文以统计用户日活数据做引导式实践,使读者即刻上手spark和mongodb进行数据统计。附干货源码下载!

Mongodb

之所以使用spark&mongodb方案,也是因为历史原因。所以数据已经存在于mongodb中。Mongodb是NoSQL数据库的一种,对比传统的关系型数据库,NoSQL有着非常显著的性能和扩展优势,然而这些优点却建立在一些关键功能的丢失之上,比如事务、join等。

什么样的场景适合选择mongodb?

  • 你期望一个更高的写负载

默认情况下,对比事务安全,MongoDB更关注高的插入速度。如果你需要加载大量低价值的业务数据,那么MongoDB将很适合你的用例。但是必须避免在要求高事务安全的情景下使用MongoDB,比如一个1000万美元的交易。

  • 不可靠环境保证高可用性

设置副本集(主-从服务器设置)不仅方便而且很快,此外,使用MongoDB还可以快速、安全及自动化的实现节点(或数据中心)故障转移。

  • 未来会有一个很大的规模

数据库扩展是非常有挑战性的,当单表格大小达到5-10GB时,MySQL表格性能会毫无疑问的降低。如果你需要分片并且分割你的数据库,MongoDB将很容易实现这一点。

  • 使用基于位置的数据查询

MongoDB支持二维空间索引,因此可以快速及精确的从指定位置获取数据。

  • 非结构化数据的爆发增长

给RDBMS增加列在有些情况下可能锁定整个数据库,或者增加负载从而导致性能下降,这个问题通常发生在表格大于1GB的情况下。鉴于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,整个过程会非常快速;因此,在应用程序发生改变时,你不需要专门的1个DBA去修改数据库模式。

  • 缺少专业的数据库管理员

如果你没有专业的DBA,同时你也不需要结构化你的数据及做join查询,MongoDB将会是你的首选。MongoDB非常适合类的持久化,类可以被序列化成JSON并储存在MongoDB。需要注意的是,如果期望获得一个更大的规模,你必须要了解一些最佳实践来避免走入误区。

日活统计数据实例

--------------------打赏⬇小编------------------

-------------------打赏⬆小编------------------

1. 环境准备

工具

版本

url

Spark

1.4.1

http://spark.apache.org/docs/1.4.1/

Mongodb

2.6.x

https://www.mongodb.com/download-center

MongoDB Hadoop Connector

1.5.1

https://github.com/mongodb/mongo-hadoop/releases

MongoDB Java Driver

3.2.2

http://mongodb.github.io/mongo-java-driver/

Scala IDE

4.3.0

http://scala-ide.org/


2. Spark语言选择

Spark支持Scala、Java、Python、R等语言,本文使用Scala,原因如下:

① Scala是一门多范式的编程语言,拥有面向对象编程和函数式编程的各种特点,且兼容Java类库;

② Scala编写比Java方便;

③ 一些新特性Python还不支持

3. 代码流程

① 创建一个Configuration实例,该实例用来设置MongoDBHadoop Connector的参数;

② 创建一个SparkContext实例,通过传入相应的InputFormat类,使用其newAPIHadoopRDD方法创建一个RDD;

③  对RDD进行Transform与Action操作后,调用结果RDD的saveAsNewAPIHadoopFile方法对统计数据进行持久化。

4. 用户日活统计Scala代码

Constants.scala


ActiveUserOnDay.scala



5. Scala的maven编译

Scala代码是需要maven编译的,通过工具表格中的ScalaIDE新建项目,加入上述scala文件,创建POM文件如下:



在Scala IDE的Run As->Maven build中执行该命令clean package -P scala-2.10进行编译。

6. Spark任务提交

将编译出的jar包上传到Spark客户机,执行如下shell:

至此就将Spark任务提交到了yarn集群,稍等一会儿即可看到输出集合中的统计结果。

reference:

Scala基础语法:http://www.yiibai.com/scala/scala_basic_syntax.html

Spark使用教程:http://spark.apache.org/docs/1.4.1/


源码下载:

https://yunpan.cn/cRgp8LNGX6BWC 

提取码:ffc9

喜马拉雅app搜索并收听“光荣之路”电台

光荣之路
招聘|征稿|合作 |QQ群
735821166@qq.com
python群:457561756
性能群:415987441
招聘群:203715128
 
光荣之路 更多文章 手把手教你Spark&Mongodb『附源码下载』(上) 招聘速递·新氧科技·北京·测试工程师 AutoMonkey框架原理与应用(六) AutoMonkey框架原理与应用(五) AutoMonkey框架原理与应用(四)
猜您喜欢 20年变迁:图形工作站 & 专业显卡——ELSA GLoria-XXL篇 为什么你那么忙,却仍然买不起一平方米的房? PostgreSQL与Linux内核版本 它们养活了一票国产软件!这些开源软件你知道吗 天猫前端基础技术体系简介