使用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()
相关推荐
每天都要写算法(努力版)1 小时前
【行业前沿报告】DAgger:让智能体在自己走到的状态上学习
人工智能·学习·机器学习
小小龙学IT1 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
Wang's Blog1 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
Elastic 中国社区官方博客2 小时前
将你自己的密钥用于现有 Elastic Cloud 部署
大数据·数据库·elasticsearch·全文检索
2601_962071572 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
红海云2 小时前
Jev:给智能系统做判断的模型
大数据·数据库·人工智能
卷无止境3 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
\光辉岁月/3 小时前
5.java-数组
java·开发语言
Java后端的Ai之路3 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
计算机毕业编程指导师3 小时前
计算机毕设选题推荐:基于Hadoop与Spark的Steam游戏数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·steam游戏