リアルタイムビッグデータ処理用Spark&Flink Online 9)Data Frame
DataFrames
DataFrameはリレーショナルデータです
DataFrameプロパティ
DataFrame:RDDの拡張版
DataFrameのアーキテクチャの決定方法
複雑なDataType
DataFrame Operations
SQLのような操作が可能
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
Reference
この問題について(リアルタイムビッグデータ処理用Spark&Flink Online 9)Data Frame), 我々は、より多くの情報をここで見つけました https://velog.io/@junsang1203/실시간-빅데이터-처리를-위한-Spark-Flink-Online-9-DataFrameテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol