Windows下pyspark环境搭建以及使用结巴分词进行词频统计
1. 环境搭建
环境搭建的教程已经有很多人写了,我就不多写了, 大家自行百度(推荐在Windows下面安装2.3.1版本的pyspark也是这个版本,避免后面踩坑https://github.com/apache/spark/pull/23055)
- 在这里下载spark的软件包放到任意目录,解压后路径避免空格,然后将bin路径加入到环境变量path中
- Windows的话,需要下载一个winutil.exe,解压后将bin路径加入到path中,然后将bin下面的wintuils.exe复制到刚才解压的spark的bin下面
- 打开终端执行:
pip install pyspark==2.3.2
搞完了执行pyspark会出现下面这个界面:
注意是没有任何报错的哦
配置pycharm
下面主要记录一下使用pycharm编写的时候的一些配置:
-
- 在Edit Configure中得Environment variables中添加下面添加SPARK_HOME 和PYTHONPATH两个变量:
PYTHONPATH:{你的spark安装目录下的pyhon目录的绝对路径}, 例如:D:\soft\spark\python
SPARK_HOME:{你安装的spark路径}例如:D:\soft\spark
2. 词频统计
先上代码
# -*- coding: utf-8 -*-
"""
pyspark from doc test
@Time : 2019/2/18 10:00
@Author : MaCan (ma_cancan@163.com)
@File : p_doc.py
"""
import jieba
from pyspark.sql import SparkSession, Row
# from pyspark.sql.types import StringType, IntegerType
from pyspark import SparkConf
def split(line):
# print('line', line)
word_list = jieba.cut(line) # 进行中文分词
return word_list
def load_and_seg(spark):
data = spark.read.text('C:\\dataset\\a.txt')
data.show()
seg = data.rdd.flatMap(lambda x: split(x[0]))
return seg
def word_count(spark, data):
data = data.map(lambda word: (word, 1)).reduceByKey(lambda x, y: x + y)
return data
if __name__ == '__main__':
jieba.cut('')
conf = SparkConf()
spark = SparkSession \
.builder \
.appName('example') \
.master('local[*]') \
.config(conf=conf) \
.getOrCreate()
seg = load_and_seg(spark)
tt = seg.collect()
print(tt)