1. 程式人生 > >spark零基礎學習線路指導【包括spark2】

spark零基礎學習線路指導【包括spark2】

問題導讀
1.你認為spark該如何入門?
2.你認為spark入門程式設計需要哪些步驟?
3.本文介紹了spark哪些程式設計知識?


轉載註明連結:

http://www.aboutyun.com/forum.php?mod=viewthread&tid=21959


640?wx_fmt=jpeg 

spark學習一般都具有hadoop基礎,所以學習起來更容易多了。如果沒有基礎,可以參考零基礎學習hadoop到上手工作線路指導(初級篇)。具有基礎之後,一般都是按照官網或則視訊、或則文件,比如搭建spark,執行spark例子。後面就不知道做什麼了。這裡整體梳理一下。希望對大家有所幫助。
1.spark場景
在入門spark之前,首先對spark有些基本的瞭解。比如spark場景,spark概念等。推薦參考


Spark簡介:適用場景、核心概念、建立RDD、支援語言等介紹
http://www.aboutyun.com/forum.php?mod=viewthread&tid=9389


2.spark部署
首先還是說些基礎性的內容,非零基礎的同學,可以跳過。
首先還是spark環境的搭建。
about雲日誌分析專案準備6:Hadoop、Spark叢集搭建
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20620
spark環境搭建完畢,例子執行完畢。後面就不知道幹啥了。


這時候我們就需要了解spark。
從不同角度,可以有多種不同的方式:如果我們從實戰工作的角度,下面我們就需要了解開發方面的知識

如果我們從知識、理論的角度,我們就需要了解spark生態系統
下面我們從不同角度來介紹


3.spark實戰
3.1spark開發環境
比如我們從實戰的角度,當我們部署完畢,下面我們就可以接觸開發方面的知識。
對於開發,當然是首先是開發工具,比如eclipse,IDEA。對於eclipse和IDEA兩個都有選擇的,看你使用那個更順手些。

下面是個人總結希望對大家有幫助[二次修改新增內容]
spark開發環境詳細教程1:IntelliJ IDEA使用詳細說明
http://www.aboutyun.com/forum.php?mod=viewthread&tid=22320

spark開發環境詳細教程2:window下sbt庫的設定

http://www.aboutyun.com/forum.php?mod=viewthread&tid=22409

spark開發環境詳細教程3:IntelliJ IDEA建立專案
http://www.aboutyun.com/forum.php?mod=viewthread&tid=22410

spark開發環境詳細教程4:建立spark streaming應用程式
http://www.aboutyun.com/forum.php?mod=viewthread&tid=22465


更多瞭解即可:
Spark整合開發環境搭建-eclipse
http://www.aboutyun.com/forum.php?mod=viewthread&tid=6772


用IDEA開發spark,原始碼提交任務到YARN
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20316



Spark1.0.0 開發環境快速搭建
http://www.aboutyun.com/forum.php?mod=viewthread&tid=8403

spark開發環境中,如何將原始碼打包提交到叢集
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20979


田毅-Spark開發及本地環境搭建指南
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20313

Spark 開發環境IntelliJ IDEA圖文教程、視訊系統教程
http://www.aboutyun.com/forum.php?mod=viewthread&tid=10122

3.2spark開發基礎
開發環境中寫程式碼,或則寫程式碼的時候,遇到個嚴重的問題,Scala還不會。這時候我們就需要補Scala的知識。如果是會Java或則其它語言,可能會閱讀C,.net,甚至Python,但是Scala,你可能會遇到困難,因為裡面各種符號和關鍵字,所以我們需要真正的學習下Scala。下面內容,是個人的總結,僅供參考
#######################
about雲spark開發基礎之Scala快餐
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20303


spark開發基礎之從Scala符號入門Scala
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20159

spark開發基礎之從關鍵字入門Scala
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20223

更多內容:
spark開發基礎之Scala快餐:開發環境Intellij IDEA 快捷鍵整理【收藏備查】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20380

學習Scala的過程中,參考了以下資料
《快學Scala》完整版書籍分享
http://www.aboutyun.com/forum.php?mod=viewthread&tid=8713

scala入門視訊【限時下載】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=12434

更多可以搜尋Scala
http://so.aboutyun.com/

#######################
相信上面的資料,足以讓你搞懂Scala。Scala會了,開發環境、程式碼都寫好了,下面我們就需要打包了。該如何打包。這裡打包的方式有兩種:
1.maven
2.sbt
有的同學要問,哪種方式更好。其實兩種都可以,你熟悉那個就使用那個即可。
下面提供一些資料
scala eclipse sbt( Simple Build Tool) 應用程式開發
http://www.aboutyun.com/forum.php?mod=viewthread&tid=9340


使用maven編譯Spark
http://www.aboutyun.com/forum.php?mod=viewthread&tid=11746

更多資料
Spark大師之路:使用maven編譯Spark
http://www.aboutyun.com/forum.php?mod=viewthread&tid=10842

用SBT編譯Spark的WordCount程式
http://www.aboutyun.com/forum.php?mod=viewthread&tid=8587


如何用maven構建spark
http://www.aboutyun.com/forum.php?mod=viewthread&tid=12261

3.3spark開發知識
spark 開發包括spark core的相關元件及運算,還有spark streaming,spark sql,spark mlib,GraphX.
###########################
下面的知識是關於spark1.x的,關於1.x其實有了基礎,那麼spark2.x學習來是非常快的。那麼他們之間的區別在什麼地方?最大的區別在程式設計方面是spark context,sqlcontext,hive   context,都使用一個類即可,那就是SparkSession。他的程式設計是非常方便的。比如
通過SparkSession如何建立rdd,通過下面即可
640?wx_fmt=jpeg
再比如如何執行spark sql
640?wx_fmt=jpeg

更多參考:
spark2:SparkSession思考與總結
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23381



SparkSession使用方法介紹【spark2.0】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19632



spark2使用遇到問題總結
http://www.aboutyun.com/forum.php?mod=viewthread&tid=24050


spark2.0文件【2016英文】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=18970


spark2 sql讀取資料來源程式設計學習樣例1:程式入口、功能等知識詳解
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23484


spark2 sql讀取資料來源程式設計學習樣例2:函式實現詳解
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23489


使用spark2 sql的方式有哪些
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23541


spark2之DataFrame如何儲存【持久化】為表
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23523


spark2 sql程式設計樣例:sql操作
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23501


spark2 sql讀取json檔案的格式要求
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23478


spark2 sql讀取json檔案的格式要求續:如何查詢資料
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23483


spark2的SparkSession思考與總結2:SparkSession包含哪些函式及功能介紹
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23407


spark2.2以後版本任務排程將增加黑名單機制
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23346




##########################

3.3.1spark 程式設計
說到spark程式設計,有一個不能繞過的SparkContext,相信如果你接觸過spark程式,都會見到SparkContext。那麼他的作用是什麼?
SparkContext其實是連線叢集以及獲取spark配置檔案資訊,然後執行在叢集中。如下面程式可供參考

[Scala] 純文字檢視 複製程式碼

?

1234567import org.apache.spark.SparkConfimport org.apache.spark.SparkContextval conf = new SparkConf().setAppName(“MySparkDriverApp”).setMaster(“spark://master:7077”).set(“spark.executor.memory”, “2g”)val sc = new SparkContext(conf)


下面圖示為SparkContext作用

640?wx_fmt=png

當然還有 SQLContext 和HiveContext作用是類似的,同理還有hadoop的Context,它們的作用一般都是全域性的。除了SparkContext,還有Master、worker、DAGScheduler、TaskScheduler、Executor、Shuffle、BlockManager等,留到後面理論部分。這裡的入門更注重實戰操作

我們通過程式碼連線上叢集,下面就該各種記憶體運算了。
比如rdd,dataframe,DataSet。如果你接觸過spark,相信rdd是經常看到的,DataFrame是後來加上的。但是他們具體是什麼。可以詳細參考spark core元件:RDD、DataFrame和DataSet介紹、場景與比較
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20902

看到上面我們其實可能對它們還沒有認識到本質,其實他們就是記憶體的資料結構。那麼資料結構相信我們應該都瞭解過,最簡單、我們經常接觸的就是陣列了。而rdd,跟陣列有一個相同的地方,都是用來裝資料的,只不過複雜度不太一樣而已。對於已經瞭解過人來說,這是理所當然的。這對於初學者來說,認識到這個程度,rdd就已經不再神祕了。那麼DataFrame同樣也是,DataFrame是一種以RDD為基礎的分散式資料集.

rdd和DataFrame在spark程式設計中是經常用到的,那麼該如何得到rdd,該如何建立DataFrame,他們之間該如何轉換。
建立rdd有三種方式,
1.從scala集合中建立RDD
2.從本地檔案系統建立RDD
3.從HDFS建立RDD
詳細參考
spark小知識總結
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20920

如何建立dataframe
df<-data.frame(A=c(NA),B=c(NA))
當然還可以通過rdd轉換而來,通過toDF()函式實現
rdd.toDF()
dataframe同樣也可以轉換為rdd,通過.rdd即可實現
如下面
val rdd = df.toJSON.rdd
為了更好的理解,在看下面例子

[Scala] 純文字檢視 複製程式碼

?

1234先建立一個類case class Person(name: String, age: Int)然後將Rdd轉換成DataFrameval people = sc.textFile("/usr/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)).toDF()


即為rdd轉換為dataframe.

RDD和DataFrame各種操作
上面只是簡單的操作,更多還有rdd的action和TransformationActions操作如:reduce,collect,count,foreach等
Transformation如,map,filter等
更多參考
Spark RDD詳解
http://www.aboutyun.com/forum.php?mod=viewthread&tid=7214

DataFrame同理

DataFrame 的函式

collect,collectAsList等
dataframe的基本操作
cache,columns 等
更多參考
spark DataFrame 的函式|基本操作|整合查詢記錄
http://www.aboutyun.com/blog-1330-3165.html


spark資料庫操作
很多初級入門的同學,想在spark中操作資料庫,比如講rdd或則dataframe資料匯出到mysql或則oracle中。但是讓他們比較困惑的是,該如何在spark中將他們匯出到關係資料庫中,spark中是否有這樣的類。這是因為對程式設計的理解不夠造成的誤解。在spark程式中,如果操作資料庫,spark是不會提供這樣的類的,直接引入操作mysql的庫即可,比如jdbc,odbc等。
比如下面Spark通過JdbcRDD整合 Mysql(JdbcRDD)開發
http://www.aboutyun.com/forum.php?mod=viewthread&tid=9826
更多可百度。
經常遇到的問題
在操作資料中,很多同學遇到不能序列化的問題。因為類本身沒有序列化.所以變數的定義與使用最好在同一個地方。
想了解更詳細,可參考
不能序列化解決方法 org.apache.spark.sparkException:Task not serializable
http://www.aboutyun.com/home.php?mod=space&uid=29&do=blog&id=3362
小總結
如果上面已經都會了,那麼spark基本程式設計和做spark相關專案外加一些個人經驗相信應該沒有問題。

3.3.2spark sql程式設計
spark sql為何會產生。原因很多,比如用spark程式設計完成比較繁瑣,需要多行程式碼來完成,spark sql寫一句sql就能搞定了。那麼spark sql該如何使用。

1.初始化spark sql
為了開始spark sql,我們需要新增一些imports 到我們程式。如下面例子1
例子1Scala SQL imports

[Scala] 純文字檢視 複製程式碼

?

1234// Import Spark SQLimport org.apache.spark.sql.hive.HiveContext// Or if you can't have the hive dependenciesimport org.apache.spark.sql.SQLContext


下面引用一個例子

首先在maven專案的pom.xml中新增Spark SQL的依賴。
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.10</artifactId>
    <version>1.5.2</version>
</dependency>

[Scala] 純文字檢視 複製程式碼

?

01020304050607080910111213141516171819202122232425262728293031323334353637package [url=http://www.aboutyun.com]www.aboutyun.com[/url]import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.sql.SQLContextobject InferringSchema {def main(args: Array[String]) {//建立SparkConf()並設定App名稱val conf = new SparkConf().setAppName("aboutyun")//SQLContext要依賴SparkContext

相關推薦

spark基礎學習線路指導包括spark2

問題導讀1.你認為spark該如何入門?2.你認為spark入門程式設計需要哪些步驟?3.本文介

spark基礎學習路線指導

問題導讀 1.你認為spark該如何入門? 2.你認為spark入門程式設計需要哪些步驟? 3.本文介紹了spark哪些程式設計知識?   spark學習一般都具有hadoop基礎,所以學習起來更容易多了。如果沒有基礎,可以參考零基礎學習

大資料-基礎學習hadoop到上手工作線路指導(初級篇)

零基礎學習hadoop,沒有想象的那麼困難,也沒有想象的那麼容易。在剛接觸雲端計算,曾經想過培訓,但是培訓機構的選擇就讓我很糾結。所以索性就自己學習了。整個過程整理一下,給大家參考,歡迎討論,共同學習。 從一開始什麼都不懂,到能夠搭建叢集,開發。整個過程,只要有Linux基礎,虛擬機器化和java基礎,其

2016.6.13 基礎學習hadoop到上手工作線路指導(中級篇)

原文地址 附帶連結(待看) 中級篇學習筆記 進度:內容很多很雜,先看一下後半部分的hadoop生態系統。 操作:並未實際操作。 hadoop生態系統 最常用的是hive和hbase,因此著重學習這兩個。 hive相關學習

Absible基礎學習Ansible普通用戶sudo執行指令

lang 配置 hosts source 3.1 KS one LG 否則 最近公司將linux機器都禁止使用root直接遠程登陸,而機器上項目都是在root下創建的,平時都是通過一臺linux機器通過scp分發文件到多臺linux機器,這樣一來,就無法直接使用scp來分發

基礎學習大數據怎樣入門Spark

優勢 作業 結合 導致 項目 輸出 轉換 虛擬機 yar 1.什麽是Spark Apache Spark是一個圍繞速度、易用性和復雜分析構建的大數據處理框架。最初在2009年由加州大學伯克利分校的AMPLab開發,並於2010年成為Apache的開源項目之一。 與Hadoo

基礎學習大資料怎樣入門Spark

1.什麼是Spark Apache Spark是一個圍繞速度、易用性和複雜分析構建的大資料處理框架。最初在2009年由加州大學伯克利分校的AMPLab開發,並於2010年成為Apache的開源專案之一。 與Hadoop和Storm等其他大資料和MapReduce技術相比,Spark有如下優勢

良心C語言基礎學習,C語言初學者入門基礎知識講解

C++ 其實是一種中級語言,它是 Bjarne Stroustrup 於 1979 年和以往的積累在貝爾實驗室開始設計開發的一種計算機語言。C++ 進一步擴充和完善了 C 語言,不僅是一種面向物件的程式設計語言,還要提到的C++ 可運行於多種平臺上,比如Windows還有

Spark (Python版) 基礎學習筆記(一)—— 快速入門

由於Scala才剛剛開始學習,還是對python更為熟悉,因此在這記錄一下自己的學習過程,主要內容來自於spark的官方幫助文件,這一節的地址為: 文章主要是翻譯了文件的內容,但也在裡邊加入了一些自己在實際操作中遇到的問題及解決的方案,和一些補充的小知識,一起學習。 環境

javascript入門經典推薦—新手必備、基礎學習

本書目錄 第一章:  JavaScript語言基礎 第二章:  JavaScript內建物件 第三章:  視窗window物件 第四章:  文件document物件 第五章:  表單form物件 第六章:  History與Navigator物件 第七章:  JavaScr

Spark (Python版) 基礎學習筆記(五)—— Spark RDDs程式設計

RDD基礎概念 建立RDD 建立RDD的方法: 1.載入外部資料集 2.分佈一個物件的集合 前邊幾次的筆記已經提到過多次了,因此,這裡只列出幾個注意事項: 1.利用sc.parallelize建立RDD一般只適用於在測試的時候使用,因為這需要我們將整

Spark (Python版) 基礎學習筆記(四)—— Spark概覽

結合了《Learning Spark: Lightning-Fast Big Data Analysis》和官方2.02版本的Spark Document總結了關於Spark概念性的一些知識。幫助大家對Spark有一個總體上的認知 一、Spark的兩個核心概念

備忘2017年最新北風網基礎學習機器學習(Python語言、演算法、Numpy庫、MatplotLib)視訊教程)

機器學習作為人工智慧的一部分,已經應用於很多領域,遠超過人們的想象,垃圾郵件的過濾,線上廣告的推薦系統,還有目前發展飛快的物體識別、人臉識別和語音識別的發展,都是機器學習的應用的成果。機器學習在改善商業決策、提高生產率、檢測疾病、預測天氣等方面都有非常大的應用前景。1. 課

基礎學習HTML5—html+css基礎藍鷗出品

一、課程目標 1、瞭解前端開發職位;2、掌握常用標籤以及語義及用法;3、掌握常用css的特性,掌握基礎佈局技巧;4、掌握整站規劃概念。 二、適用人群 零基礎積極學習html5者

Spark (Python版) 基礎學習筆記(二)—— Spark Transformations總結及舉例

1. map(func) 將func函式作用到資料集的每個元素,生成一個新的分散式的資料集並返回 >>> a = sc.parallelize(('a', 'b', 'c')) >>> a.map(lambda x:

創科之龍基礎學習嵌入式開發以及專案實戰開發第二期視訊

【創科之龍】零基礎學習嵌入式開發以及專案實戰開發【學習交流零基礎火熱進行ing】 大家好,我是aiku,上期的專案學習資料在電子發燒友論壇上分享,大家覺得都很好。 在這裡我首先要感謝電子發燒友給我

Java基礎學習Java編程語言從哪兒入手?

軟件工程是計算機領域發展最快的學科分支之一,國家非常重視軟件行業的發展。對軟件工程師人才的培養給予了非常優惠的政策。在所有軟件開發類人才的需求中對Java工程師的需求達到全部需求量的60~70%。應該說Java軟件工程師就業前景是非常好的,再加上Java軟件工程師不僅IT專業企業需要,廣大的非IT企業也

salesforce基礎學習(七十二)項目中的零碎知識點小總結(一)

gin 不同 grant dmi ima -m ron 角色 com 項目終於告一段落,雖然比較苦逼,不過也學到了好多知識,總結一下,以後當作參考。 一.visualforce標簽中使用html相關的屬性使用 曾經看文檔沒有看得仔細,導致開發的時候走了一些彎路。還好得到

基礎學習python

fix pytho 零基礎 基礎 tar install 基礎學習 默認 prefix wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz tar -zxvf Python-2.7.8.tgz cd Py

salesforce基礎學習(七十四)apex:actionRegion以及apex:actionSupport淺談

xxx turn 組件 聯動 異步 action cti 相關 bottom 我們在開發中,很難會遇見不提交表單的情況。常用的apex:commandButton,apex:commandLink,apex:actionFunction,apex:actionSupport