PySpark の RDD 操作

PySparkで学ぶBig Data入門

Upendra Devisetty

Science Analyst, CyVerse

PySpark 操作の概要

  • 変換は新しい RDD を作成します
  • アクションは RDD 上で計算を実行します
PySparkで学ぶBig Data入門

RDD 変換

  • 変換は遅延評価に従います

  • 基本的な RDD 変換

    • map(), filter(), flatMap(), union()
PySparkで学ぶBig Data入門

map() 変換

  • map() は RDD の全要素に関数を適用します

map

RDD = sc.parallelize([1,2,3,4])
RDD_map = RDD.map(lambda x: x * x)
PySparkで学ぶBig Data入門

filter() 変換

  • filter 変換は条件を満たす要素だけの新しい RDD を返します

filter

RDD = sc.parallelize([1,2,3,4])
RDD_filter = RDD.filter(lambda x: x > 2)
PySparkで学ぶBig Data入門

flatMap() 変換

  • flatMap() は各要素から複数の値を返します

RDD = sc.parallelize(["hello world", "how are you"])
RDD_flatmap = RDD.flatMap(lambda x: x.split(" "))
PySparkで学ぶBig Data入門

union() 変換

inputRDD = sc.textFile("logs.txt")
errorRDD = inputRDD.filter(lambda x: "error" in x.split())
warningsRDD = inputRDD.filter(lambda x: "warnings" in x.split())
combinedRDD = errorRDD.union(warningsRDD)
PySparkで学ぶBig Data入門

RDD アクション

  • 計算を実行し、RDD から値を返す操作です

  • 基本的な RDD アクション

    • collect()

    • take(N)

    • first()

    • count()

PySparkで学ぶBig Data入門

collect() と take() アクション

  • collect() はデータセットの全要素を配列で返します

  • take(N) は先頭 N 個の要素を配列で返します

RDD_map.collect()
[1, 4, 9, 16]
RDD_map.take(2)
[1, 4]
PySparkで学ぶBig Data入門

first() と count() アクション

  • first() は RDD の先頭要素を返します
RDD_map.first()
[1]
  • count() は RDD の要素数を返します
RDD_flatmap.count()
5
PySparkで学ぶBig Data入門

RDD 操作を練習しましょう

PySparkで学ぶBig Data入門

Preparing Video For Download...