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 ([email protected])
@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)