spark零基礎學習線路指導【包括spark2】
問題導讀
1.你認為spark該如何入門?
2.你認為spark入門程式設計需要哪些步驟?
3.本文介紹了spark哪些程式設計知識?
轉載註明連結:
http://www.aboutyun.com/forum.php?mod=viewthread&tid=21959
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,通過下面即可
再比如如何執行spark sql
更多參考:
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] 純文字檢視 複製程式碼
?
1234567 | import org.apache.spark.SparkConf import org.apache.spark.SparkContext val conf = new SparkConf().setAppName(“MySparkDriverApp”).setMaster(“spark : //master:7077”).set(“spark.executor.memory”, “2g”) val sc = new SparkContext(conf) |
下面圖示為SparkContext作用
當然還有 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轉換成DataFrame val 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 SQL import org.apache.spark.sql.hive.HiveContext // Or if you can't have the hive dependencies import 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] 純文字檢視 複製程式碼
?
01020304050607080910111213141516171819202122232425262728293031323334353637 package
[url
=
http
:
//www.aboutyun.com]www.aboutyun.com[/url]
import
org.apache.spark.{SparkConf, SparkContext}
import
org.apache.spark.sql.SQLContext
object
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