Spark数据统计

Spark概要

Spark是基于Hadoop MapReduce的通用并行框架,其用于大规模数据处理的统一分析引擎。它提供了 Scala、Java、Python 和 R 中的高级 API,以及支持用于数据分析的通用计算图的优化引擎。它还支持丰富的高级工具集,包括用于 SQL 和 DataFrames 的 Spark SQL、用于 Pandas 工作负载的 Pandas API on Spark、用于机器学习的 MLlib、用于图形处理的 GraphX 和用于流处理的结构化流。

Spark任务处理

{'Serial_Number': '75538355167', 'Brand': 'Huawei', 'Price': '2303 ', 'Charging_Power': '82', 'Screen_Size': '5.8'}
{'Serial_Number': '55845351577', 'Brand': 'Huawei', 'Price': '5101 ', 'Charging_Power': '93', 'Screen_Size': '6.8'}
{'Serial_Number': '88527296624', 'Brand': 'Xiaomi', 'Price': '8792 ', 'Charging_Power': '96', 'Screen_Size': '5.4'}
{'Serial_Number': '64494555309', 'Brand': 'OnePlus', 'Price': '13238 ', 'Charging_Power': '55', 'Screen_Size': '5.8'}

这是要处理的数据样式有五个字段需要进行处理

1.对数据中的Brnd品牌字段进行处理,对数据中每个品牌用户的数量进行计数。开始先获取json文件,然后使用selectExpr查询Brand字段,使用groupBy对字段进行分组然后进行计数。sort进行排序。运行结果如下:

2.对数据中每个手机的充电速率进行分类低于30的为"低速充电”,大于等于30小于60的为“中速充电”,大于等于60小于90的为“高速充电”,大于100的为“超高速充电”。对Brand,和充电速率进行分组,用agg函数对Charging_Power字段求平均值。用filter查询出充电速度为超高速充电的。结果如下:

3.对每个手机价格高于5000定义为1高端手机,其他定义为0中低端手机。因为数据的价格字段后有一个空格,需要先使用代码清除,后面数据好处理。新增一个字段将大于5000的设为1,把Price转换为int格式。查询所有字段,查询“是否为高端手机”等于1的字段,对Brand和“是否为高端手机”字段进行分组然后计数,然后进行排序。可以看到每个手机品牌为高端手机的数量。

Scala数据处理

在scala任务中每10秒输出一次,连接自己的IP,和9999端口。将输入的数据转换为RealEstate2类型的对象。这是通过fronjson方法实现的,该方法将JSON字符串转换为RealEstate2对象。将上一步得到的数据,转换为一个键值对,值是整数1。对上一步得到的数据进行reduce操作。将所有具有相同键的值(这里是整数1)相加,每个品牌的总数计算出来。用reduceByKey操作后的结果打印每个品牌的总数。在虚拟机使用nc -l 端口号然后输入一段数据。输出结果如下:计算出输入数据中每个品牌的数量。

小结

学习Spark需要将基础和实践结合起来,很多的基础知识在Hadoop中基础知识之上进行学习,只有去体验实际操作才能体会到区别。学习好spark,scala语言的学习至关重要,Scala背后所代表的函数式编程思想也越来越为人所知。函数式编程思想早在50多年前就被提出,但当时的硬件性能太弱,并不能发挥出这种思想的优势,scala语言是一门非常简洁的语言。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值