一、SPARK CORE的使用
1.在JUPYTER網頁上創建新的ipynb文件
2.環境準備代碼
import os
import sys
spark_home = os.environ.get('SPARK_HOME',None)
if not spark_home:
raise ValueError('SPARK_HOME enviroment variable is not set')
sys.path.insert(0,os.path.join(spark_home,'python'))
sys.path.insert(0,os.path.join(spark_home,'python/lib/py4j-0.10.4-src.zip'))
exec(open(os.path.join(spark_home,'python/pyspark/shell.py')).read())
運行後顯示
二、概念
1.SPARK CORE:spark生態圈的核心
RDD:容錯性分佈數據(Resilient Distributed Dataset),SPARK CORE的任務就是對這些數據進行分佈式計算
2.RDD類型:
- 並行集合(分佈式化的數據對象,類比python中的list)
- 文件系統數據集(Hadoop Datasets.文本文件,如通過sc.textFile()讀取的數據)
對RDD的操作
- 變換(Transformations):返回值仍是RDD,但是隻有等到Actions操作時纔會真正計算給出結果--Lazy Evaluation
- 操作(Actions):返回值是非並行化的數據集合如python的list
3.並行化集合(我們處裏的RDD數據,所有對於集合而言,第一步需要並行化)
parallelize(list)
可以看到我們的集合已經成功並行化
4.取值操作
take(n):從rdd返回n個元素
top(num):從rdd返回最大的num個數的元素
first():從rdd返回第一個元素
collect():從rdd返回所有元素
5.rdd元素變換
- map(): map()函數需要一個參數,參數是一個函數,簡單理解:將RDD的每一個元素取出,分別通過這個函數變換之後,返回一個新的RDD. 這裏使用匿名函數(lambda),給RDD每一個元素執行加一的變量,最後通過collect()操作查看結果
- flatMap(): 注意傳入的函數的返回值一定要是可迭代的對象(比如元組 集合 列表)簡單的理解:對RDD每一個元素執行函數變換,返回一個迭代器,最後展平結果
- filter(): 參數同樣是一個函數,作用是過濾元素 執行過程:將RDD每一個元素執行你寫的條件判斷語句,只有結果爲True才返回
- 其他
- union():聯合 intersection():交集 subtract():差集 cartesian():笛卡爾