Contenu connexe
Similaire à 20160127三木会 RDB経験者のためのspark (20)
Plus de Ryuji Tamagawa (20)
20160127三木会 RDB経験者のためのspark
- 12. ターゲットの違い
基本的な指向 I/Oの特性 集中 / 分散
RDB
小さいレコード
を細かく読み・
書き・更新
比較的小さな領
域をランダムア
クセス
集中
Hadoop
エコシステム
1回書いて何度
も読む
比較的大きな領
域をシーケンシ
ャルアクセス
分散
• RDBもHadoopエコシステムも、それぞれの領域をカバーするような取り組
みが進んでいますが、基本的な性格を理解しておくことは重要だと思います。
- 22. RDDの処理(論理構造)
# テキストを読んでRDDを生成
rmRDD = sc.textfile(‘readme.md’)
#フィルタをかけて次のRDDを生成
RDD_1 = rmRDD.filter(…)
#もう1つフィルタ。
RDD_2 = RDD_1.filter(…)
#この時点ではまだテキストファイルも読まれていない
#キャッシュを指示
RDD_2.persist()
#1つめの分岐
RDD_2_a = RDD_2.filter(…)
#行数のカウント。この時点ですべての処理が走る
count = RDD_2_a.count() #RDD_2はここでキャッシュ
#2つめの分岐
RDD_2_b = RDD_2.filter(…)
#行数のカウント。この時点ですべての処理が走る
count = RDD_2_b.count() #演算はRDD_2以降のみ
ファイル
rmRDD
RDD_1
RDD_2
RDD_2_a RDD_2_a
123 456
- 23. RDDの処理(実行)
driver Executor1 Executor2
# テキストを読んでRDDを生成
rmRDD = sc.textfile(‘readme.md’)
#フィルタをかけて次のRDDを生成
RDD_1 = rmRDD.filter(…) #フィルタ1
#もう1つフィルタ。
RDD_2 = RDD_1.filter(…) #フィルタ2
#この時点ではまだテキストファイルも読まれていない
#キャッシュを指示
RDD_2.persist()
#1つめの分岐
RDD_2_a = RDD_2.filter(…) #フィルタ2a
#行数のカウント。この時点ですべての処理が走る
count = RDD_2_a.count() #RDD_2はここでキャッシュ
#2つめの分岐
RDD_2_b = RDD_2.filter(…) #フィルタ2b
#行数のカウント。この時点ですべての処理が走る
count = RDD_2_b.count() #演算はRDD_2以降のみ
rmRDD登録
フィルタ1登録
フィルタ2登録
RDD_2のキャッシュ準備
フィルタ2a登録
rmRDDの読み取り、フィルタ1,2,2a
の実行、RDD_2のキャッシュ
フィルタ2b登録
フィルタ2b実行