spark学习习惯

spark常常是构建实时流项目来进行计算,在平时的学习和重点提高上面不是很方便,那么如何更加高效的学习spark呢?

首先要是想高效,就得分段,这类似于项目开发中的组件化

总结下flume+kafka+spark+mysql/hbase/redis运行方案:

1.flume接受数据,输出数据

2.kafka接受flume数据,转送到spark上

3.spark接受kafka数据,处理数据,输出到mysql/hbase/redis

 

现在我们只是想提高下spark在数据处理上的应用(sparkSql, sparkML,sparkGraph.....)

这时不妨将spark接受的数据固定存储,比如一个csv文件, 存放在项目的根目录,这样简化了接受数据的过程

spark输出数据也可以进行简化,比如一般我们都会输出到mysql/hbase/redis,这时简化输出到控制台就行了,所以思路就是:

 

读取本地文件(txt,csv....)---->spark处理----->打印到控制台

这种非商业化使用的思路也是一般训练的思路,比如matlab , tensorFlow处理流程类似!

 

spark处理简化需求,由于spark本身内容比较多,包括sql,ml等等,再加上scala相比python学习起来要复杂点(比如对DataSet ,RDD, DataFrame操作),所以spark的学习也必须清晰化

利用组件化思想(其本身也是抽象和分解的实现)+步骤测试(为什么不叫单元测试,集成测试,因为这里测试的可能就俩行)

如何组件化处理+步骤测试呢?

spark处理:

1.读取本地文件, 那么组件化就是能做到读取各种文件---》验证(输出读取到的文件)

2.建议数据格式转换(一般都有这种需求,虽然数据前期经过了清洗存储,但spark分析的也不是所有的数据),组件化比如:如何处理dataFrame这种类型的数据 ,打乱数据(代理变位)等  ---》验证(输出转换后的数据)

3.sparkSql处理:初始化---》使用一点 --》验证(输出处理后的数据)---》使用一点---》验证(输出处理后的数据)

4.sparkMl处理 :初始化---》使用一点 --》验证(输出处理后的数据)--》使用一点 --》验证(输出处理后的数据)

 

辅助技巧:

像dataFrame, dataset ,RDD等许多类型的变量都有show  方法,将数据打印出来,这在验证中常常被使用

如何打乱数据(代理变位)? 举个实际中的例子,我们租房子的时候喜欢找中介,由中介根据我们的需求找到合适的房子,这里的中介就能理解为代理, 代理这种思想在现实中应用很广泛, 当然在设计模式中的代理模式也是类似的思想,打乱数据,首先为每个数据元素随机生成一个数(random实现),组成的数据类型在python 和scala中加元组, 然后对每个数据元素的随机数进行排序,看,这样不就打乱原有的数据了吗

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值