大數(shù)據(jù) -【spark入門】


1. 簡要說明

基于spark 2.3.1版本學習spark基礎(chǔ)知識及整體框架。本文首先以python版為主進行描述盯桦,后期會主要針對scala版本進行詳細講解乏奥。

2. spark學習環(huán)境搭建

  • spark安裝包下載地址
http://spark.apache.org/downloads.html
https://archive.apache.org/dist/spark/

作者使用的為spark-2.3.1版本為例進行測試與學習嬉挡。(之所以不選擇最新版本丰泊,大家都懂的,最新版本不穩(wěn)定隙轻,會有很多坑要踩埠帕,索性選擇相對穩(wěn)定的版本)
  • 環(huán)境設(shè)置
1. 如想設(shè)置為全局環(huán)境變量,則可配置到bashrc_profile中
2. 僅為開發(fā)調(diào)試玖绿,直接進入到下載安裝包spark-2.3.1-bin-hadoop2.7/bin下指定相關(guān)操作的命令即可敛瓷。
  • 啟動spark
    啟動python版本spark 客戶端命令(./pyspark)
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
2019-02-11 17:57:49 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.3.1
      /_/

Using Python version 2.7.10 (default, Aug 17 2018 19:45:58)
SparkSession available as 'spark'.
>>>
    

到此為止spark學習調(diào)試的環(huán)境基本搭建完成。

3. 核心概念介紹

  • 首先斑匪,
    每個spark應用都由一個驅(qū)動器程序發(fā)起集群上的各種并行操作呐籽。shell終端本身即為實際的驅(qū)動器程序。shell啟動時自動創(chuàng)建了一個SparkContext對象蚀瘸,其變量叫sc狡蝶,所以以下的操作都可以基于sc做操作。

  • 其次贮勃,驅(qū)動器一般管理多個執(zhí)行器(executor)節(jié)點贪惹。即在集群模式下執(zhí)行action操作時,不同的節(jié)點會統(tǒng)計不同部分的數(shù)據(jù)(計算結(jié)果)寂嘉。由于我們在本地模式下執(zhí)行操作馍乙,所以所有的執(zhí)行任務(wù)都會在單節(jié)點上運行。


    spark集群模式執(zhí)行過程.png
  • 最后垫释,可通過向spark API傳遞函數(shù),亦可操作相應的集群上撑瞧。需要對lambda操作熟悉棵譬。如:
>>> lines = sc.textFile("README.md")
>>> lines.filter(lambda line: "Python" in line)
PythonRDD[4] at RDD at PythonRDD.scala:49
>>> lines.filter(lambda line: "Python" in line).count()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/py4j/protocol.py", line 328, in get_return_value
    format(target_id, ".", name), value)
py4j.protocol.Py4JJavaError

報錯原因為:spark默認是從hdfs上都文件的,想要讀取本地文件需要增加file://前綴预伺。即:

lambda形式:
lines = sc.textFile("file:///spark-2.3.1-bin-hadoop2.7/README.md")
pyline = lines.filter(lambda line: "Scala" in line)
pyline.count()

函數(shù)形式:

def hasScala(line):
    return "Scala" in line
pythonLines = lines.filter(hasPython)
  • 獨立應用之運行方式

Java和Scala中订咸,只需要添加Maven依賴,編輯器會自動下載依賴的包酬诀。但 python程序運行需要使用spark自帶的spark-submit腳本來運行脏嚷。(腳本中已經(jīng)幫我們引入了python程序的spark依賴)
例如:

#!/usr/bin/env python
# _*_ coding:utf-8 _*_


import logging
from pyspark import SparkConf, SparkContext

logging.basicConfig(level=logging.ERROR)

conf = SparkConf().setMaster("local").setAppName("myapp")
sc = SparkContext(conf=conf)

contents = sc.textFile("file://absfilepath")
res = contents.filter(lambda line: "Python" in line)
print "*" * 10,res.count()

sc.stop()

運行方式如:

spark-submit test.py

運行spark-submit時會出現(xiàn)很繁瑣不易識別的INFO信息,如何過濾掉INFO信息呢瞒御?

注意:將rootCategory等級修改為WARN或者ERROR即可父叙。

方法如下:

修改日志過濾等級:【conf/log4j.properties】

# Set everything to be logged to the console
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子趾唱,更是在濱河造成了極大的恐慌涌乳,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甜癞,死亡現(xiàn)場離奇詭異夕晓,居然都是意外死亡,警方通過查閱死者的電腦和手機悠咱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門蒸辆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人析既,你說我怎么就攤上這事躬贡。” “怎么了渡贾?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵逗宜,是天一觀的道長。 經(jīng)常有香客問我空骚,道長纺讲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任囤屹,我火速辦了婚禮熬甚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肋坚。我一直安慰自己乡括,他們只是感情好,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布智厌。 她就那樣靜靜地躺著诲泌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铣鹏。 梳的紋絲不亂的頭發(fā)上敷扫,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音诚卸,去河邊找鬼葵第。 笑死,一個胖子當著我的面吹牛合溺,可吹牛的內(nèi)容都是我干的卒密。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼棠赛,長吁一口氣:“原來是場噩夢啊……” “哼哮奇!你這毒婦竟也來了膛腐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤屏镊,失蹤者是張志新(化名)和其女友劉穎依疼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體而芥,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡律罢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棍丐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片误辑。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖歌逢,靈堂內(nèi)的尸體忽然破棺而出巾钉,到底是詐尸還是另有隱情,我是刑警寧澤秘案,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布砰苍,位于F島的核電站,受9級特大地震影響阱高,放射性物質(zhì)發(fā)生泄漏赚导。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一赤惊、第九天 我趴在偏房一處隱蔽的房頂上張望吼旧。 院中可真熱鬧,春花似錦未舟、人聲如沸圈暗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽员串。三九已至,卻和暖如春昼扛,著一層夾襖步出監(jiān)牢的瞬間昵济,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工野揪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瞧栗。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓斯稳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親迹恐。 傳聞我的和親對象是個殘疾皇子挣惰,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容