大数据体系知识学习(二):WordCount案例实现及错误总结
创始人
2025-05-30 11:54:02
0

文章目录

  • 1. 当前环境
  • 2. 相关信息
    • 2.1 相关文件
    • 2.2 相关流程
  • 3. 运行代码
  • 4. 运行结果
  • 5. 运行错误情况
    • 5.1 py4j.protocol.Py4JJavaError
    • 5.2 JAVA_HOME is not set

1. 当前环境

pyspark:版本号为3.1.2
JAVA_JDK: 版本号为1.8.0_333
Hadoop: 版本号为3.3.0

2. 相关信息

2.1 相关文件

words.txt如下

hello world hello hadoop
hadoop hello world hive
hive hive hadoop

2.2 相关流程

请添加图片描述

3. 运行代码

# spark入门案例 ---  WordCountfrom pyspark import SparkContext,SparkConf
import findspark
findspark.init()if __name__ == '__main__':print("spark入门案例 ---  WordCount")# 1) 创建 sparkContext对象conf = SparkConf().setMaster("local[*]").setAppName("WordCount")# 自动返回 变量:  ctrl +atl + vsc = SparkContext(conf=conf)# 2) 读取文件数据  file是调用本地文件rdd_init = sc.textFile("file:///F:\python\学习\Spark/file/words.txt")# 3) 对数据执行切割操作: 得到 ['hello', 'world', 'hello', 'hadoop', 'hadoop', 'hello', 'world', 'hive', 'hive', 'hive', 'hadoop']rdd_flatMap = rdd_init.flatMap(lambda line:line.split(' ')) # 一个对多个flatMap# 4) 对数据转换为  单词,1 操作# [('hello', 1), ('world', 1), ('hello', 1), ('hadoop', 1), ('hadoop', 1), ('hello', 1), ('world', 1), ('hive', 1), ('hive', 1), ('hive', 1), ('hadoop', 1)]rdd_map = rdd_flatMap.map(lambda word: (word,1)) # 一个对一个 map# 5,6) 对数据执行分组操作 统计求和操作 groupByKey是指根据key完成自动分组 reduceByKey是指根据key来做聚合# 从Shuffle的角度:#      groupByKey和reduceByKey都存在shuffle的操作,但是reduceByKey可以在shuffle之前对分区内相同key的数据集进行预聚合#      (combine),这样会减少落盘的数据量,而groupByKey只是进行分组,不存在数据量减少的问题,reduceByKey性能比较高。# 从功能的角度:#      reduceByKey其实包含分组和聚合的功能;groupByKey只能分组,不能聚合,所以在分组聚合的场合下,#      推荐使用reduceByKey,如果仅仅是分组而不需要聚合,那么还是只能使用groupByKey。rdd_res = rdd_map.reduceByKey(lambda agg, curr: agg + curr)# 7) 输出: 打印print(rdd_res.collect())# 8) 关闭 sparkContext对象sc.stop()

4. 运行结果

在这里插入图片描述

5. 运行错误情况

5.1 py4j.protocol.Py4JJavaError

错误截图
在这里插入图片描述
错误原因
因为转载时间过长找不到spark所以报错

解决办法

import findspark
findspark.init()

5.2 JAVA_HOME is not set

出现位置: 当pycharm采用SSH连接远程Python环境时, 启动执行spark程序可能报出原因: 加载不到jdk的位置

解决方案:

  • 第一步: 可以在linux的 /root/.bashrc 文件中, 添加以下两行内容 (注意需要三台都添加)
export JAVA_HOME=/export/server/jdk1.8.0_241              
export PYSPARK_PYTHON=/root/anaconda3/bin/python   
  • 第二步: 在代码中, 指定linux中spark所在目录, spark中配置文件, 即可自动加载到: 锁定远端操作环境, 避免存在多个版本环境的问题
os.environ['SPARK_HOME'] = '/export/server/spark'               
os.environ["PYSPARK_PYTHON"]="/root/anaconda3/bin/python"               
os.environ["PYSPARK_DRIVER_PYTHON"]="/root/anaconda3/bin/python"

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...