Submit Search
Upload
Spark 巨量資料處理基礎教學
•
21 likes
•
11,391 views
NUTC, imac
Follow
主要介紹 Spark 的概念與基本 RDD API 範例
Read less
Read more
Technology
Report
Share
Report
Share
1 of 45
Download now
Download to read offline
Recommended
給初學者的Spark教學
給初學者的Spark教學
Chen-en Lu
Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計
Wei-Yu Chen
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」
Takakiyo Tanaka
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
日本マイクロソフト株式会社
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
junichi anno
Google cast開発入門
Google cast開発入門
しくみ製作所
SQL Server チューニング基礎
SQL Server チューニング基礎
Microsoft
Azure DevOps CICD Azure SQL / Data Factory
Azure DevOps CICD Azure SQL / Data Factory
Ryoma Nagata
Recommended
給初學者的Spark教學
給初學者的Spark教學
Chen-en Lu
Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計
Wei-Yu Chen
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」
Takakiyo Tanaka
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
日本マイクロソフト株式会社
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
junichi anno
Google cast開発入門
Google cast開発入門
しくみ製作所
SQL Server チューニング基礎
SQL Server チューニング基礎
Microsoft
Azure DevOps CICD Azure SQL / Data Factory
Azure DevOps CICD Azure SQL / Data Factory
Ryoma Nagata
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
QlikPresalesJapan
Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?
Hendrik Ebbers
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
Takakiyo Tanaka
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版
elanlilac
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
Gelis Wu
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
YoungHeon (Roy) Kim
Sharding with sql alchemy
Sharding with sql alchemy
Akira Matsuzaki
Technip Energies Italy: Planning is a graph matter
Technip Energies Italy: Planning is a graph matter
Neo4j
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
Tomohiro Kumagai
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)
Gelis Wu
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Azure Stack HCI OS で HCI を構築してみた!(手順付)
Azure Stack HCI OS で HCI を構築してみた!(手順付)
Tomoya Katayama
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
Kenta Oku
IT技術者でも1から学べるビジネスモデルキャンバス入門
IT技術者でも1から学べるビジネスモデルキャンバス入門
陽一 滝川
Large scale enterprise software architecture
Large scale enterprise software architecture
Mohammad Yeganehfar
如何讓一個敏捷團隊,同時執行多個專案
如何讓一個敏捷團隊,同時執行多個專案
Paddy Huang
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築
Recruit Technologies
Linqの速度測ってみた
Linqの速度測ってみた
Core Concept Technologies
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応
歩 柴田
Spark调研串讲
Spark调研串讲
jie cao
Hi Haskell
Hi Haskell
Jifeng Deng
More Related Content
What's hot
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
QlikPresalesJapan
Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?
Hendrik Ebbers
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
Takakiyo Tanaka
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版
elanlilac
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
Gelis Wu
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
YoungHeon (Roy) Kim
Sharding with sql alchemy
Sharding with sql alchemy
Akira Matsuzaki
Technip Energies Italy: Planning is a graph matter
Technip Energies Italy: Planning is a graph matter
Neo4j
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
Tomohiro Kumagai
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)
Gelis Wu
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Azure Stack HCI OS で HCI を構築してみた!(手順付)
Azure Stack HCI OS で HCI を構築してみた!(手順付)
Tomoya Katayama
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
Kenta Oku
IT技術者でも1から学べるビジネスモデルキャンバス入門
IT技術者でも1から学べるビジネスモデルキャンバス入門
陽一 滝川
Large scale enterprise software architecture
Large scale enterprise software architecture
Mohammad Yeganehfar
如何讓一個敏捷團隊,同時執行多個專案
如何讓一個敏捷團隊,同時執行多個專案
Paddy Huang
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築
Recruit Technologies
Linqの速度測ってみた
Linqの速度測ってみた
Core Concept Technologies
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応
歩 柴田
What's hot
(20)
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
Sharding with sql alchemy
Sharding with sql alchemy
Technip Energies Italy: Planning is a graph matter
Technip Energies Italy: Planning is a graph matter
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
Azure Stack HCI OS で HCI を構築してみた!(手順付)
Azure Stack HCI OS で HCI を構築してみた!(手順付)
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
IT技術者でも1から学べるビジネスモデルキャンバス入門
IT技術者でも1から学べるビジネスモデルキャンバス入門
Large scale enterprise software architecture
Large scale enterprise software architecture
如何讓一個敏捷團隊,同時執行多個專案
如何讓一個敏捷團隊,同時執行多個專案
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築
Linqの速度測ってみた
Linqの速度測ってみた
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応
Similar to Spark 巨量資料處理基礎教學
Spark调研串讲
Spark调研串讲
jie cao
Hi Haskell
Hi Haskell
Jifeng Deng
Spark introduction - In Chinese
Spark introduction - In Chinese
colorant
Node.js开发体验
Node.js开发体验
QLeelulu
Scala
Scala
popeast
Hadoop学习总结
Hadoop学习总结
ordinary2012
JavaScript 快速複習 2017Q1
JavaScript 快速複習 2017Q1
Sheng-Han Su
Arduino程式快速入門
Arduino程式快速入門
吳錫修 (ShyiShiou Wu)
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Justin Lin
Sun java
Sun java
softwaredesigner
异步编程与浏览器执行模型
异步编程与浏览器执行模型
keelii
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制
maclean liu
Introduction of Spark by Wang Haihua
Introduction of Spark by Wang Haihua
Wang Haihua
山頂洞人日記 - 回歸到最純樸的開發
山頂洞人日記 - 回歸到最純樸的開發
koji lin
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
Jackson Tian
《Java程序设计》期末考试试题 (六)
《Java程序设计》期末考试试题 (六)
jane2006
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
hoopchina
Spark streaming经验介绍
Spark streaming经验介绍
Wenchun Xu
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
HITCON CTF 2014 BambooFox 解題心得分享
HITCON CTF 2014 BambooFox 解題心得分享
Chong-Kuan Chen
Similar to Spark 巨量資料處理基礎教學
(20)
Spark调研串讲
Spark调研串讲
Hi Haskell
Hi Haskell
Spark introduction - In Chinese
Spark introduction - In Chinese
Node.js开发体验
Node.js开发体验
Scala
Scala
Hadoop学习总结
Hadoop学习总结
JavaScript 快速複習 2017Q1
JavaScript 快速複習 2017Q1
Arduino程式快速入門
Arduino程式快速入門
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Sun java
Sun java
异步编程与浏览器执行模型
异步编程与浏览器执行模型
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制
Introduction of Spark by Wang Haihua
Introduction of Spark by Wang Haihua
山頂洞人日記 - 回歸到最純樸的開發
山頂洞人日記 - 回歸到最純樸的開發
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
《Java程序设计》期末考试试题 (六)
《Java程序设计》期末考试试题 (六)
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
Spark streaming经验介绍
Spark streaming经验介绍
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
HITCON CTF 2014 BambooFox 解題心得分享
HITCON CTF 2014 BambooFox 解題心得分享
Spark 巨量資料處理基礎教學
1.
專業代理上課⼈人員 :煞氣a凱仁 乾 偶腰回夾了拉
2.
什麼是Spark ? 2 Apache Spark是⼀一個開源叢集運算框架,最初是由加州⼤大學柏克萊分校AMPLab所開發。相對於 Hadoop的MapReduce會在執⾏行完⼯工作後將中介資料存放到磁碟中,Spark使⽤用了記憶體內運算技 術,能在資料尚未寫⼊入硬碟時即在記憶體內分析運算。
3.
巨量資料處理架構 • 重複⼯工作:許多專有系統在解決同樣問題,如分散式作業以及容錯。 舉例,⼀一個分散式的 SQL
引擎或⼀一個機器學習系統都需要實現平⾏行聚 合。這些問題在每個專有系統中會重複地被解決。 • 組合問題:在不同系統之間進⾏行組合計算是費⼒力⼜又不討好的事情。對 於特定的⼤大數據應⽤用程式⽽而且,中間資料集是⾮非常⼤大的,⽽而且移動的 本也⾮非常⾼高,⺫⽬目前環境中採⽤用副本機制,將資料複製到穩定儲存系統 (HDFS),以便在不同引擎進⾏行分享。但這樣往往⽐比運算花費代價要 ⼤大許多。 3
4.
巨量資料處理架構 • 適⽤用範圍的限制:如果⼀一個應⽤用不適合⼀一個專有的計算系統,那麼使 ⽤用者只能換⼀一個系統,或重新定義⼀一個新的計算系統。 • 資源設定:在不同計算引擎之間進⾏行資源的動態共⽤用是⽐比較困難的。 因為⼤大多數計算引擎都會假設它們在程式執⾏行結束之前擁有相同的機 器節點的資源。 •
管理問題:對於多個專有系統,需要花費更多時間與精⼒力來管理與部 署。我們終端使⽤用者,要學習多種API與系統模型。 4
5.
Hadoop 問題點 5 • 我們都知道
Google 的 MapReduce,他是⼀一個簡單通⽤用與⾃自動容錯的 批次處理計算模型。http://static.googleusercontent.com/media/ research.google.com/zh-TW//archive/mapreduce-osdi04.pdf • 由於 Hadoop 很多⼦子專案都繼承 MR 模型,對於其他類型計算,諸如 互動式與串流式計算,並不適合被拿來使⽤用。導致⼤大量不同於 MR 的 專有資料處理模型出現,Ex:Storm、Impala與GraphLab。 • 然⽽而隨著新模型的不斷出現,似乎對於巨量資料處理⽽而⾔言,不同類型 的作業應該需要⼀一系列不同的處理架構才可以極佳地完成。但是這些 專有系統也有⼀一些不⾜足之處。
6.
Spark 巨量資料處理架構 6 • Spark
採⽤用⼀一個 RDD 概念(⼀一種新的抽象的彈性資料集),在某種程 度上 Spark 是對 MapReduce 模型的⼀一種擴充。 • 主要是把 MR 不擅⻑⾧長的計算⼯工作(反覆運算、互動式與串流式)進⾏行改 善,並提出⼀一個統⼀一的引擎。 • 因為 MR 缺乏⼀一種特性,就是在平⾏行計算的各個階段劑型有效的資料共 ⽤用,這種共⽤用就是 RDD 的本質。利⽤用這種本質來達到這些運算模式。 • 在叢集處理的容錯⽅方式,不像Hadoop與 Dryad將計算建置成⼀一個無環圖 的⼯工作集。
7.
RDD 表達能⼒力 7 • 反覆運算演算法:這是⺫⽬目前專有系統實現⽐比較普遍的應⽤用 場景,⽤用於圖型處理與機器學習。RDD
能夠極佳的實現這 些模型,包含Pregel、HaLoop、GraphLab等模型。 • 關連式查詢:對 MR 來說⾮非常重要的需求就是SQL查詢, 包含⻑⾧長期執⾏行、數⼩小時的批次處理作業與互動式查詢。在 MR 上有其內在缺點,如其容錯的模型⽽而導致速度很慢。利 ⽤用RDD實現許多通⽤用的資料庫引擎特性,使效能提升。
8.
RDD 表達能⼒力 8 • MapReduce
批次處理:RDD提供的介⾯面是 MR 的超集合,所以 RDD 可以有效地執⾏行與利⽤用 MR 實現應⽤用程式,另外 RDD 還適合更加抽象 的以 DAG 為基礎的應⽤用程式,如 DryadLINQ。 • 串流式處理:⺫⽬目前串流式系統只提供有限容錯處理,需要消耗系統⾮非 常⼤大的複製代價與⾮非常⻑⾧長的容錯時間。然⽽而 RDD 實現⼀一個新的模型— 離散資料流程(D-Stream),D-Stream 將串流計算當作⼀一系列的短⼩小 的批次處理操作,⽽而⾮非常駐有狀態的操作,將兩個離散串流之間的狀 態存在RDD中。並允許 RDD 的繼承關係圖(Lineage)進⾏行平⾏行性的 恢復,⽽而不需要進⾏行資料複製。
9.
Spark Ecosystem 9
10.
處理的基本情況 10 我們可以將巨量資料處理分為以下三種情況: • 複雜的批次資料處理(batch data
processing):時間⻑⾧長,跨度為 10min - N hr。 • 以歷史資料為基礎的互動查詢(interactive query):時間通常為 10 sec - N min。 • 以即時資料流為基礎的資料處理(streaming data processing):時間 通常為 N ms - N sec。
11.
Spark ⼦子專案對應 11 • Spark
Core:以 RDD 提供了豐富的基礎操作介⾯面,利⽤用 DAG 進⾏行統⼀一 ⼯工作規劃,使 Spark 能夠靈活地處理類似 MR 的批次作業。 • Spark SQL:相容 Hive 介⾯面 HQL,提供⽐比 Hive 更好查詢速度(10 - 100 x)的分散式 SQL 引擎。 • Spark Streaming:將串流式計算分解成⼀一系列短⼩小的批次處理作業,利 ⽤用 Spark 輕量級與低延遲時間的排程架構,來⽀支援串流處理。⺫⽬目前已⽀支援 資料源套件,Kafka、Flume、ELK、Twitter 與 TCP sockets等。
12.
Spark ⼦子專案對應 12 • GraphX:已
Spark 為基礎的圖形計算架構,相容 Pregel 與 GraphLab 介⾯面,增強圖 型建置與圖的轉換功能。 • MLlib:因為 Spark Core ⾮非常適合於 反覆式運算,MLlib就是作為Spark的機器學習 演算法函式庫。已⽀支援分類、分群、關聯與推薦演算法。如以下: • 匯總統計、相關性、分層抽樣、假設檢定、隨機資料⽣生成 • 分類與回歸:⽀支援向量機、回歸、線性回歸、決策樹、樸素⾙貝葉斯 • 協同過濾:ALS • 分群:k-平均演算法(k-mean) • 維度縮減:奇異值分解(SVD),主成分分析(PCA) • 特徵提取和轉換:TF-IDF、Word2Vec、StandardScaler • 最佳化:隨機梯度下降法(SGD)、L-BFGS
13.
Spark Standalone Mode 13
14.
Spark On Mesos 14 是很多公司採⽤用的模式,官⽅方推薦這種模式(當然,原因之 ⼀一是⾎血緣關係)。正是由於Spark開發之初就考慮到⽀支持 Mesos,因此,⺫⽬目前⽽而⾔言,Spark運⾏行在Mesos上會⽐比運⾏行在 YARN上更加靈活,更加⾃自然。⺫⽬目前在Spark
On Mesos環境 中,⽤用⼾戶可選擇兩種調度模式之⼀一運⾏行⾃自⼰己的應⽤用程序。 • 粗粒度模式(Coarse-grained Mode) • 細粒度模式(Fine-grained Mode)
15.
Spark On Mesos 15
16.
Spark On YARN 16 這是⼀一種最有前景的部署模式。但限於YARN⾃自⾝身的發展,⺫⽬目前僅⽀支持粗粒 度模式(Coarse-grained
Mode)。這是由於YARN上的Container資源是不 可以動態伸縮的,⼀一旦Container啟動之後,可使⽤用的資源不能再發⽣生變 化。
17.
⽤用Spark做什麼? 17 對⼯工程師⽽而⾔言,Spark提供了⼀一個簡單的⽅方式在集群之間並⾏行化這 些應⽤用,隱藏了分佈式系統、網絡通信和容錯處理的複雜性。系 統使得⼯工程師在實現任務的同時,有充⾜足的權限監控、檢查和調 整應⽤用。 API的模塊特性使得重⽤用已有⼯工作和本地測試變得簡 單。 Spark⽤用⼾戶使⽤用Spark作為其數據處理應⽤用,因為他提供了豐富的 功能,易於學習和使⽤用,⽽而且成熟可靠。
18.
⽤用Spark有哪些好處? 18 • Java、Scala、Python 和
R APIs。 • 可擴展⾄至超過 8000 個結點。 • 能夠在記憶體內緩存資料集以進⾏行互動式資料分析。 • Scala 或 Python 中的互動式命令列介⾯面可降低橫向擴展資料探 索的反應時間。 • Spark Streaming 對即時資料串流的處理具有可擴充性、⾼高吞吐 量、可容錯性等特點。 • Spark SQL ⽀支援結構化和和關聯式查詢處理(SQL)。 • MLlib 機器學習演算法和 Graphx 圖形處理演算法的⾼高階函式 庫。
19.
19 基本操作
20.
安裝Spark 20 $ wget http://files.imaclouds.com/scripts/hadoop-spark-installer.sh OR https://hub.docker.com/r/kairen/yarn-spark/
21.
下載 Spark Library 21 http://files.imaclouds.com/packages/hadoop-spark/ spark-assembly-1.5.2-hadoop2.6.0.jar 並
Import 到 Project 裡
22.
執⾏行指令 22 $ spark-submit --class
<package> --master local[2] <jar path> <input path> <output path>
23.
在 HDFS 新增資料 23 $
vim test.txt a,123,456,789,11344,2142,123 b,1234,124,1234,123,123 c,123,4123,5435,1231,5345 d,123,456,789,113,2142,143 e,123,446,789,14,2142,113 f,123,446,789,14,2142,1113,323 $ hadoop fs -mkdir /spark/homework $ hadoop fs -put test.txt /spark/homework
24.
Spark 操作概念 24 Spark 共有以下幾個概念: •Resilient
Distributed Datasets •Creation operation •Transformation operation •control operation •action operation
25.
SparkConf & JavaSparkContext 25 //
建⽴立 Configuration 且定義 Job 名稱 SparkConf conf = new SparkConf(); conf.setAppName(“JavaWordCount”); conf.setMaster("yarn-cluster") // 建⽴立 JavaSparkContext 來接收資料來源 JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> file = sc.textFile(inputPath);
26.
map 26 Input : String Output
: 任⼀一定義 JavaRDD<String> map =file.map(new Function<String, String>() { public String call(String arg0) throws Exception { return arg0; } }); {1,2,3} => {1,2,3}
27.
map 練習 27 找出測試資料所有英⽂文字⺟母,並存⾄至/spark/ homework/map。結果如下: a b c d e f
28.
flatmap 28 Input : String Output
: Iterable<v> // v 型態任⼀一定義 JavaRDD<String> map =file .flatMap(new FlatMapFunction<String, String>() { public Iterable<String> call(String arg0) throws Exception { return Arrays.asList(arg0.split(",")); } }); {1,2,3} => {1 2 3}
29.
flatmap 練習 29 找出測試資料所有以”,”切割的資料,並存⾄至/spark/homework/flatMap。 結果如下: a 123 456 789 11344 2142 123 b 1234 ….
30.
filter 30 Input : String Output
: Boolean JavaRDD<String> filter =map.filter(new Function<String, Boolean>() { public Boolean call(String arg0) throws Exception { if(arg0.contains("2")){ return true; } return false; } }); {1,2,3} => {2}
31.
filter 練習 31 找出測試資料所有以123與456的資料,並存⾄至/ spark/homework/filter。結果如下: 123 456 123 1234 1234 ….
32.
mapToPair 32 Input : String Output
: Tuple2<K, V> // K、V型態任⼀一定義 JavaPairRDD<String, Integer> pairRDD =file .mapToPair(new PairFunction<String, String, Integer>() { public Tuple2<String, Integer> call(String arg0) throws Exception { return new Tuple2<String, Integer>(arg0, 1); } }); {1,2,3} => {(1,1),(2,1),(3,1)}
33.
mapToPair 練習 33 將測試資料轉換成(str, 1),並存⾄至/spark/homework/ mapPair。結果如下: (a,1) (123,1) (456,1) (789,1) (11344,1) (2142,1) (123,1) ….
34.
flatMapToPair 34 Input : String Output
: Iterable<Tuple2<K, V>> // K、V型態任⼀一定義 JavaPairRDD<String, Integer> pairRDD =file .flatMapToPair(new PairFlatMapFunction<String, String, Integer>() { public Iterable<Tuple2<String, Integer>> call(String arg0) throws Exception { ArrayList<Tuple2<String,Integer>> arrayList =new ArrayList<Tuple2<String,Integer>>(); arrayList.add(new Tuple2<String, Integer>(arg0, 123)); return arrayList ; } }); {1,2,3} => {(1,123),(2,123),(3,123)}
35.
flatMapToPair 練習 35 將測試資料轉換成(字⺟母, 所有後⾯面數字的sum),並存 ⾄至/spark/homework/filter_output。結果如下: (a,14977) (b,2838) (c,16257) (d,3766) (e,3627) (f,4950) ….
36.
groupBy 36 Input : String Output
: V // V 型態任⼀一定義 JavaPairRDD<String, Iterable<String>> groupBy =file .groupBy(new Function<String, String>() { public String call(String arg0) throws Exception { return (arg0.contains("2")?"A":"B"); } }); {1,2,3} => {(A,{2}) , (B,{1,3})}
37.
groupBy 練習 37 找出測試資料中⼤大於500的資料,若無法辨識分 到”None”,並存⾄至/spark/homework/groupBy。結果如 下: (None,[a, b,
c, d, e, f]) (⼩小於 500,[123, 456, 123, 124, 123, 123, 123, 123, 456, 113, 143, 123, 446, 14, 113, 123, 446, 14, 323]) (⼤大於 500,[789, 11344, 2142, 1234, 1234, 4123, 5435, 1231, 5345, 789, 2142, 789, 2142, 789, 2142, 1113]) ….
38.
reduce 38 Input : String Output
: String String string = flatmap.reduce(new Function2<String, String, String>() { public String call(String arg0, String arg1) throws Exception { return arg0+arg1+"~~"; } }); {1,2,3} => {1~~2~~3}
39.
reduce 練習 39 找出測試資料所有英⽂文字⺟母,並⽤用reduce將之 append成⼀一個字串,並存⾄至/spark/homework/ reduce。結果如下: abcdef
40.
reduceByKey 40 Input : String Output
: Integer JavaPairRDD<String, Integer> reduceByKey =flatmap .reduceByKey(new Function2<Integer, Integer, Integer>() { public Integer call(Integer arg0, Integer arg1) throws Exception { return arg0+arg1; } }); {(1,1),(1,2),(3,3)} => {(1,3),(3,3)}
41.
reduceByKey 練習 41 找出以”,”切割的所有wordcount,並存⾄至/spark/ homework/reduceByKey。結果如下: (d,1) (1113,1) (1231,1) (e,1) (14,2) (113,2) ….
42.
mapValues 42 Input : String Output
: Integer reduceByKey.mapValues(new Function<Integer, Integer>() { public Integer call(Integer arg0) throws Exception { return arg0*100; } }); {(1,1),(2,2),(3,3)} => {(1,100),(2,200),(3,300)}
43.
sortByKey & distinct 43 //以
Key 為主進⾏行⼤大到⼩小排序,反之true⼩小到⼤大 JavaPairRDD<String, Integer> sort = reduceByKey.sortByKey(false); //去除重覆 JavaPairRDD<String, Integer> sort = reduceByKey.distinct(); {1,2,3} => {(1,123),(2,123),(3,123)}
44.
打鐵趁熱(⼀一) 44 找出Datasets中,銷售前⼆二⼗十名的商品。結果為以 下: 01,0006584093 02,0000143511 03,0007082051 04,0005772981 05,0014252066 ….
45.
打鐵趁熱(⼆二) 45 • 使⽤用者編號1~10中對商品編號1~10 的評價有
3 以上的有哪些?依 照 rating 進⾏行排序 (⼤大到⼩小) •結果格式如下 • User 1 評價 Item 1 為 5 • u.data.csv (http://files.imaclouds.com/dataset/u.data.csv)
Download now