5.7 Spark简单算子案例(Python版)

2023-05-16

第一关 WordCount - 词频统计

  • 编程要求
  1. 对文本文件内的每个单词都统计出其出现的次数。
  2. 按照每个单词出现次数的数量,降序排序。

        文本文件内容如下(单词与单词之间以空格进行分割):

hello java

hello python java

hello python python

hello flink

scala scala scala scala scala

        预期输出: (scala,5) (hello,4) (python,3) (java,2) (flink,1) 

  • 代码实现
# -*- coding: UTF-8 -*-
from pyspark import SparkContext

if __name__ == "__main__":

    """
        需求:对本地文件系统URI为:/root/wordcount.txt 的内容进行词频统计
    """
    # ********** Begin **********#

    sc = SparkContext("local","pySpark")
    rdd = sc.textFile("/root/wordcount.txt")
    values = rdd.flatMap(lambda x:str(x).split(" ")).map(lambda x:(x,1)).reduceByKey(lambda x,y:x+y).sortBy(lambda x:tuple(x)[1],False)
    print(values.collect())

    # ********** End **********#

第二关 Friend Recommendation - 好友推荐

  • 编程要求

        统计间接好友并输出结果。

        预期结果:[(world_tom,2),(tom_mr,1),(mr_hadoop,1),(cat_mr,1),(world_cat,1),(cat_hadoop,2),(hive_tom,3),(world_mr,2)]

  • 代码实现
# -*- coding: UTF-8 -*-
from pyspark import SparkContext

def word_couple(word1, word2):
    if hash(word1) > hash(word2):
        return word1 + '_' + word2
    return word2 + '_' + word1

def relations(items):
    result = []
    for i in range(1, len(items)):
        result.append((word_couple(items[0], items[i]), 0))
        for j in range(i+1, len(items)):
            result.append((word_couple(items[i], items[j]), 1))
    return result

def fun2(x):
    values = tuple(x[1])
    return ((x[0], 0) if min(values)==0 else (x[0], sum(values)))

if __name__ == "__main__":
    """
        需求:对本地文件系统URI为:/root/friend.txt 的数据统计间接好友的数量
    """
    # ********** Begin **********#
    sc = SparkContext("local", "friend recommendation")
    src = sc.textFile("/root/friend.txt").map(lambda x:x.strip().encode('utf-8').split(" "))
    rdd = src.flatMap(relations).reduceByKey(lambda x,y:0 if x==0 or y==0 else x+y).filter(lambda x:x[1]>0)
    print(rdd.collect())

    # ********** End **********#
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

5.7 Spark简单算子案例(Python版) 的相关文章

  • STM32CubeMX+keil5+esp8266(基于hal库的stm32+esp8266连接)

    MX的烧录口和时钟设置 xff1a 配置时钟 xff1a 串口1配置 xff08 用来输出提示信息 xff09 串口2配置波特率115200 xff0c 使能全局中断 xff08 用来做esp8266的串口通信 xff09 命好名生成代码并
  • Vue.js基础---简单的模板页面

    Vue js基础 简单的模板页面 1 模板页面包含了哪些东西 xff1f gt html 43 js 2 js以什么形式 语法 存在 xff1f 插值 双大括号表达式 xff0c 插入一个动态的值在标签内文本内容上 xff0c 动态显示数据
  • STM32单片机,STLINK的SW仿真时“no target connected”问题及处理

    1 问题介绍 在KEIL5软件中使用STLINK仿真器仿真时 使用SW仿真时 xff0c 遇到了no target connected的问题 二 解决方案 通过询问买家 xff0c 自己反复调试后 xff0c 终于解决了这一问题 xff0c
  • Docker comsul(注册中心)

    文章目录 Docker consul xff08 注册中心 xff09 什么是consul xff1f consul干什么的 xff1f 一 consul的使用场景二 consul集群三 consul部署1 建立consul服务2 设置代理
  • python 输入 input() 与输出 print()

    目录 1 输入字符串 2 输入数字 3 输入列表 理解 eval 函数的使用 4 输出 print python 使用 input 获取用户的输入 xff0c 该操作属于无脑式输入 xff0c 不管在键盘上敲入什么内容都会当作字符串类型返回
  • Linux 禁用/启用 网络唤醒功能

    使用ifconfig查看网卡设备 xff0c 这里以eth0为例 1 输入 ethtool eth0 2 在结果内查看是否有如下内容 Supports Wake on pumbgWake on g 若Wake on的值为d xff0c 表示
  • xrandr详细介绍

    简介 xrandr是一款官方的扩展配置工具 它可以设置屏幕显示的大小 方向 镜像等 xff0c 包括对多屏的设置 详细的使用方法可以通过man xrandr查看 单屏设置 查询 使用xrandr q或者xrandr命令可以查询当前的显示状态
  • VS Code中使用git(创建本地仓库及远程仓库、将本地仓库推送至远程仓库、克隆远程仓库、拉取远程仓库、解决冲突)

    创建本地仓库及远程仓库 将本地仓库推送至远程仓库 克隆远程仓库 拉取远程仓库 解决冲突 文章目录 一 创建远程仓库 使用Gitee或者GitHub 二 git推送本地代码至远程仓库三 git克隆远程仓库代码到本地四 VS Code推送代码至
  • Java中的equals和==

    一 equals和 61 61 的区别 1 根本的区别在于 equals Object obj 是一个方法 xff0c 而 61 61 是一个运算符 2 一般来说 xff0c 61 61 运比较的是在内存中的物理地址 xff0c equal
  • [欠驱动机器人]1.概念

    目录 定义反馈控制输入或状态限制不完整约束欠驱动机器人举例参考文献 定义 形象来看 xff0c 就是机器人驱动数量小于关节数量 从数学来看 xff0c 根据牛顿定律 xff0c 机械系统的动力学方程为二阶导数形式 F 61 ma xff0c
  • Prometheus自主无人机入门笔记

    本部分介绍自主无人机组成框架 自主无人机关键技术 1 1 自主无人机的组成框架 1 1 1 硬件框架 自主无人机硬件组成有 机架 动力系统 xff08 包括电机 电调和浆 xff09 指挥 系统 xff08 机载电脑 飞控板 xff09 通
  • 自主导航与路径规划无人机研究现状

    目录 1 SLAM算法的研究现状 2 无人机定位研究现状 3 路径规划的研究现状 参考文献 1 SLAM算法的研究现状 移动机器人根据传感器获取的自身状态信息和环境信息构建环境地图的过程被称之为SLAM问题 xff0c SLAM问题能否解决
  • FreeRTOS学习笔记【一】——初识FreeRTOS

    1 1 初识 FreeRTOS 1 1 1 什么是 FreeRTOS 我们看一下 FreeRTOS 的名字 xff0c 可以分为两部分 Free 和 RTOS xff0c Free 就是免费的 自由的 不受约束 的意思 xff0c RTOS
  • FreeRTOS学习笔记【四】——FreeRTOS 中断配置和临界段

    目录 4 1 Cortex M 中断 4 1 1 中断简介 4 1 2 中断管理简介 4 1 3 优先级分组定义 4 1 4 优先级设置 4 1 5 用于中断屏蔽的特殊寄存器 4 2 FreeRTOS 中断配置宏 4 2 1 configP
  • 计算机网络——网络层课后习题答案

    一 xff08 1 xff09 假设一个主机 IP 地址为 192 55 12 120 xff0c 子网掩码为 255 255 255 240 xff0c 试求其子网号 主机号以及广播地址 xff08 2 xff09 如果子网掩码改为 25
  • python 列表list用法总结

    目录 1 创建空列表 2 索引 切片 3 加入元素 4 删除 清空操作 5 列表长度及最值 6 运算符和表达式 7 值的索引 8 反转及排序 9 统计指定元素出现的次数 10 交换 11 列表相互赋值 python 中的列表 xff08 l
  • docker学习笔记

    docker学习笔记 1 什么是docker 2 docker能干什么 3 docker基本使用方式3 1配置国内镜像 xff1a 3 2docker的执行原理3 3docker镜像的基本命令3 4容器的基本命令3 5其他常用的基本命令 参
  • 【Elastic (ELK) Stack 实战教程】07、Logstash 快速入门及 Input、Filter 插件讲解

    目录 一 Logstash 架构介绍 1 1 为什么需要 Logstash 1 2 什么是 Logstash 1 3 Logstash 架构介绍 1 4 安装 Logstash 二 Logstash Input 插件 2 1 stdin 插
  • 【Elastic (ELK) Stack 实战教程】09、Kibana 分析站点业务日志

    目录 一 kibana 数据展示概述 1 1 Kibana 基本介绍 1 2 Kibana 部署架构 二 Kibana 展示业务日志 2 1 日志分析介绍 2 2 两个维度分析日志 2 2 1 Nginx 访问分析 2 2 2 网站业务数据
  • 【Elastic (ELK) Stack 实战教程】10、ELK 架构升级-引入消息队列 Redis、Kafka

    目录 一 ELK 架构面临的问题 1 1 耦合度过高 1 2 性能瓶颈 二 ELK 对接 Redis 实践 2 1 配置 Redis 2 1 1 安装 Redis 2 1 2 配置 Redis 2 1 3 启动 Redis 2 2 配置 F

随机推荐