SPARK下载安装
1.
JDK部署
Spark是跑在JVM上,所以必須部署JDK
提供百度網盤的JDK下載地址:
64位操作系統:jdk-8u211-windows-x64.exe
https://pan.baidu.com/s/1EU1SM4h02Uj0fI-myzys9Q
*環境變量設置(在電腦輸入高級環境變量--環境變量-系統變量)
系統變量新建:JAVA_HOME >> C:\Program Files\Java\jdk1.8.0_211
在PATH后面加入 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;注意分好
系統變量新建:CLASSPATH >> .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
參考:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html
*測試
java -version
2.hadoop下載
step 1 : 從 (https://github.com/steveloughran/winutils)下載適合自己版本的文件;
step 2:? 對該文件進行解壓;
step 3: 配置環境變量:
①增加系統變量HADOOP_HOME,值是下載的zip包解壓的目錄,我這里
C:\Users\87671\Downloads\winutils-master\winutils-master\hadoop-2.7.1
②在系統變量path里增加%HADOOP_HOME%\bin
3.Spark部署
Spark 從官網上http://spark.apache.org/downloads.html
下載spark-2.4.1-bin-hadoop2.7 解壓后 bin目錄為可執行文件,conf目錄為配置目錄
注意文件名之間不要有空格
SPARK_HOME>>C:\Users\87671\Downloads\spark-2.4.3-bin-hadoop2\spark-2.4.3-bin-hadoop2\spark-2.4.3-bin-hadoop2.7
PATH >> ;%SPARK_HOME%\bin;%SPARK_HOME%;
4.python(可以通過anaconda)
-
python 與 spark關聯
打開anaconda命令行findspark模塊:pip install findspark -
打開spark‘
- import findspark
#可在環境變量中進行設置,即PATH中加入如下地址
findspark.init("C:\\Users\\87671\\Downloads\\spark-2.4.3-bin-hadoop2\\spark-2.4.3-bin-hadoop2\\spark-2.4.3-bin-hadoop2.7")
from pyspark import SparkContext as sc
from pyspark import SparkConf as conf
第一個程序
-
from pyspark.sql import SparkSession
from pyspark import SparkContext
from pyspark import SparkConf# 創建sc
sc=SparkContext("local","Simple")#讀取文件
textFile = sc.textFile("E:/pythonWp/sparkWP/wordCount/word.txt")
def contains(line):return 'hello' in line
filterRDD = textFile.filter(contains)
filterRDD.cache()
filterRDD.count()counts=textFile.flatMap(lambda line: line.split(" ")) \.map(lambda word: (word, 1)) \.reduceByKey(lambda a, b: a + b)
counts.foreach(print)
textFile包含了多行文本內容,textFile.flatMap(labmda line : line.split(” “))會遍歷textFile中的每行文本內容,當遍歷到其中一行文本內容時,會把文本內容賦值給變量line,并執行Lamda表達式line : line.split(” “)。line : line.split(” “)是一個Lamda表達式,左邊表示輸入參數,右邊表示函數里面執行的處理邏輯,這里執行line.split(” “),也就是針對line中的一行文本內容,采用空格作為分隔符進行單詞切分,從一行文本切分得到很多個單詞構成的單詞集合。這樣,對于textFile中的每行文本,都會使用Lamda表達式得到一個單詞集合,最終,多行文本,就得到多個單詞集合。textFile.flatMap()操作就把這多個單詞集合“拍扁”得到一個大的單詞集合。
然后,針對這個大的單詞集合,執行map()操作,也就是map(lambda word : (word, 1)),這個map操作會遍歷這個集合中的每個單詞,當遍歷到其中一個單詞時,就把當前這個單詞賦值給變量word,并執行Lamda表達式word : (word, 1),這個Lamda表達式的含義是,word作為函數的輸入參數,然后,執行函數處理邏輯,這里會執行(word, 1),也就是針對輸入的word,構建得到一個tuple,形式為(word,1),key是word,value是1(表示該單詞出現1次)。
程序執行到這里,已經得到一個RDD,這個RDD的每個元素是(key,value)形式的tuple。最后,針對這個RDD,執行reduceByKey(labmda a, b : a + b)操作,這個操作會把所有RDD元素按照key進行分組,然后使用給定的函數(這里就是Lamda表達式:a, b : a + b),對具有相同的key的多個value進行reduce操作,返回reduce后的(key,value),比如(“hadoop”,1)和(“hadoop”,1),具有相同的key,進行reduce以后就得到(“hadoop”,2),這樣就計算得到了這個單詞的詞頻。
?
參考:https://blog.csdn.net/SummerHmh/article/details/90146991?
http://dblab.xmu.edu.cn/blog/spark-quick-start-guide/
總結
- 上一篇: AutoVue现在支持本地2D Creo
- 下一篇: 用pandas库提取IBTrACS中特定