使用pyspark完成wordcount案例

本地运行+本地数据

import os
import re

from pyspark.conf import SparkConf
from pyspark.context import SparkContext
"""
数据在本地
代码在本地
使用的是windows的资源

"""

if __name__ == '__main__':
    # 配置环境
    os.environ['JAVA_HOME'] = 'E:/java-configuration/jdk-8'
    # 配置Hadoop的路径,就是前面解压的那个路径
    os.environ['HADOOP_HOME'] = 'E:/applications/bigdata_config/hadoop-3.3.1/hadoop-3.3.1'
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_PYTHON'] = 'C:/Users/35741/miniconda3/python.exe'  
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/Users/35741/miniconda3/python.exe'

    conf = SparkConf().setMaster("local[*]").setAppName("第一个spark项目")
    sc = SparkContext(conf=conf)
    fileRdd = sc.textFile("../data/wordcount/input")
    # split 默认是切空格的 假如是多个空格可以识别么
    fileRdd.filter(lambda line: len(line) > 0).flatMap(lambda line: line.strip().split()).map(lambda word: (word, 1)) \
        .reduceByKey(lambda sum, tmp: sum + tmp).saveAsTextFile("../data/wordcount/output3")

    # fileRdd.filter(lambda line: len(line) > 0).flatMap(lambda line: re.split("\s+",line.strip()) ).map(lambda word: (word, 1)) \
    #     .reduceByKey(lambda sum, tmp: sum + tmp).saveAsTextFile("../data/wordcount/output2")
    sc.stop()

本地运行+集群数据

import os
import re

from pyspark.conf import SparkConf
from pyspark.context import SparkContext
"""
数据在hdfs
代码在本地
资源使用的是windows的

"""

if __name__ == '__main__':
    # 配置环境
    os.environ['JAVA_HOME'] = 'E:/java-configuration/jdk-8'
    # 配置Hadoop的路径,就是前面解压的那个路径
    os.environ['HADOOP_HOME'] = 'E:/applications/bigdata_config/hadoop-3.3.1/hadoop-3.3.1'
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_PYTHON'] = 'C:/Users/35741/miniconda3/python.exe'  
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/Users/35741/miniconda3/python.exe'
    os.environ['HADOOP_USER_NAME'] = 'root'

    conf = SparkConf().setMaster("local[*]").setAppName("第一个spark项目")
    sc = SparkContext(conf=conf)
    fileRdd = sc.textFile("hdfs://bigdata01:9820/spark/wordcount/input")

    fileRdd.filter(lambda line: len(line) > 0).flatMap(lambda line: re.split("\s+",line.strip()) ).map(lambda word: (word, 1)) \
        .reduceByKey(lambda sum, tmp: sum + tmp).saveAsTextFile("hdfs://bigdata01:9820/spark/wordcount/output2")
    sc.stop()

外部传参+服务器模式

import os
import re
import sys

from pyspark.conf import SparkConf
from pyspark.context import SparkContext

"""
数据在hdfs
代码在本地
资源使用的是windows的

"""

if __name__ == '__main__':
    inputPath = sys.argv[1]
    outputPath = sys.argv[2]
    # 配置环境
    os.environ['JAVA_HOME'] = '/opt/installs/jdk'
    # 配置Hadoop的路径,就是前面解压的那个路径
    os.environ['HADOOP_HOME'] = '/opt/installs/hadoop'
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_PYTHON'] = '/opt/installs/anaconda3/bin/python3'  # 配置base环境Python解析器的路径
    os.environ['PYSPARK_DRIVER_PYTHON'] = '/opt/installs/anaconda3/bin/python3'

    conf = SparkConf().setAppName("第一个spark项目")
    sc = SparkContext(conf=conf)
    fileRdd = sc.textFile(inputPath)

    fileRdd \
        .filter(lambda line: len(line) > 0) \
        .flatMap(lambda line: re.split("\s+", line.strip())) \
        .map(lambda word: (word, 1)) \
        .reduceByKey(lambda sum, tmp: sum + tmp) \
        .saveAsTextFile(outputPath)

    sc.stop()
相关推荐
失败尽常态5231 分钟前
用Python实现Excel数据同步到飞书文档
python·excel·飞书
2501_904447743 分钟前
OPPO发布新型折叠屏手机 起售价8999
python·智能手机·django·virtualenv·pygame
青龙小码农3 分钟前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿9 分钟前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
南宫生28 分钟前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
Leuanghing32 分钟前
【Leetcode】11. 盛最多水的容器
python·算法·leetcode
技术小齐1 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
竹言笙熙1 小时前
代码审计初探
学习·web安全
彳卸风1 小时前
Unable to parse timestamp value: “20250220135445“, expected format is
开发语言
日记成书1 小时前
物联网智能项目
物联网·学习