リアルタイムビッグデータ処理用Spark&Flink Online 9)Data Frame


DataFrames

  • DataFrameの使い方
  • DataFrameデータ型
  • DataFrameで可能な演算
  • DataFrameでの集約動作
  • DataFrameはリレーショナルデータです

  • 一言:リレーショナルデータセット:RDD+リレーショナル
  • RDDが関数APIを有する場合、DataFrameは宣言API
  • である
  • 自動最適化
  • タイプの
  • はありません

    DataFrameプロパティ


    DataFrame:RDDの拡張版
  • 遅延(Lazy Execution)
  • 分散型ストレージ
  • Immutable
  • 列オブジェクト
  • SQLクエリー
  • を実行できます.
  • アーキテクチャにより、パフォーマンスをさらに最適化
  • CSV、JSON、Hive等、読み取り又は
  • に変換可能

    DataFrameのアーキテクチャの決定方法

  • dtypes
  • show()
  • は、テーブル形式でデータ
  • を出力する.
  • は上位20列の
  • のみを表示する.
  • printSchema()
  • モードは、ツリー型
  • と見なすことができる.

    複雑なDataType

  • ArrayType
  • MapType
  • StructType
  • DataFrame Operations


    SQLのような操作が可能
  • Select
  • Where
  • Limit
  • OrderBy
  • GroupBy
  • Join
  • Select


    ユーザーの抽出に必要なColumnまたはデータ
    >>> df.select('*').collect()
    [Row(age=2, name='Alice'), Row(age=5, name='Bob')]
    >>> df.select('name', 'age').collect()
    [Row(name='Alice', age=2), Row(name='Bob', age=5)]
    >>> df.select(df.name, (df.age + 10).alias('age')).collect()
    [Row(name='Alice', age=12), Row(name='Bob', age=15)]

    Agg


    Aggregateの略で、グループ化してデータを1つにまとめる
    >>> df.agg({"age": "max"}).collect()
    [Row(max(age)=5)]
    >>> from pyspark.sql import functions as F
    >>> df.agg(F.min(df.age)).collect()
    [Row(min(age)=2)]

    GroupBy


    ユーザが指定したColumnに従ってデータをグループ化します.
    >>> df.groupBy().avg().collect()
    [Row(avg(age)=3.5)]
    >>> sorted(df.groupBy('name').agg({'age':'mean'}).collect())
    [Row(name='Alice', avg(age)=2.0), Row(name='Bob', avg(age)=5.0)]
    >>> sorted(df.groupBy(df.name).avg().collect())
    [Row(name='Alice', avg(age)=2.0), Row(name='Bob', avg(age)=5.0)]
    >>> sorted(df.groupBy(['name', df.age]).count().collect())
    [Row(name='Alice', age=2, count=1), Row(name='Bob', age=5, count=1)]

    Join


    指定したColumnに基づいて他のDataFrameをマージ
    >>> df.join(df2, 'name').select(df.name, df2.height).collect()
    [Row(name='Bob', height=85)]

    Summary

  • DataFrameコンセプト
  • DataFrame操作法
  • :SQL