バツイチとインケンのエンジニアブログ
プログラムやプログラムじゃないこと

Apache Spark: SparkSQLリファレンス〜関数編・集計関数〜

2015-11-13
書いた人 : バツイチ
カテゴリ : Spark | タグ : Apache Spark, SQL, リファレンス

SparkSQLリファレンス第四部、関数編・集計関数です。

集計関数

SQL関数の花形、集計関数です。
基本的にはGROUP BYと一緒に使用します。
※GROUP BYを使用しないとグルーピングを伴わない集計になり、全件カウントなどに使います。

関数 内容 ver.
approxCountDistinct approxCountDistinct(e: Column)
approxCountDistinct(columnName: String)
approxCountDistinct(e: Column, rsd: Double)
approxCountDistinct(columnName: String, rsd: Double)
グルーピング内のアイテム数の近似値を返します。
アイテム数が少ない場合は正確な値を返します。アイテム数が多い場合に近似値となります。
第2引数に相対標準偏差(RSD)を指定し、近似の許容度を設定することもできます。

sql:

select
  approxCountDistinct( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  approxCountDistinct( $"e" )
) 
1.3.0
avg avg(e: Column)
avg(columnName: String)
グループ内での平均値を計算します。

sql:

select
  avg( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  avg( $"e" )
) 

例) グループ内アイテムが ( 1, 3, 3, 9 )の場合、4が返ります。

1.3.0
count count(e: Column)
count(columnName: String)
グループ内でのアイテム数をカウントします。

sql:

select
  count( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  count( $"e" )
) 
1.3.0
countDistinct countDistinct(expr: Column, exprs: Column*)
countDistinct(columnName: String, columnNames: String*)
グループ内でのアイテム数をカウントします。
countでは重複したアイテムもカウントアップしますが、重複しないアイテム数をカウントします。
※DataFrameでは COUNT( DICTINCT 〜 ) 構文が使えないのでcountDistinctを使用します。

sql:

select
  count( distinct e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  countDistinct( $"e" )
) 

例) ( apple, apple banana, orange )のようなデータがあった場合に、
count : 4
countDistinct: 3
が返ります。

1.3.0
first first(e: Column)
first(columnName: String)
グループ内での最初の値を返します。

sql:

select
  first( e )
from
  table
group by

DataFrame:

df.groupBy(
  $"a"
).agg(
  first( $"e" )
) 
1.3.0
last last(e: Column)
last(columnName: String)
グループ内での最後の値を返します。

sql:

select
  last( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  last( $"e" )
) 
1.3.0
max max(e: Column)
max(columnName: String)
グループ内での最大の値を返します。

sql:

select
  max( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  max( $"e" )
) 

例) グループ内アイテムが ( 1, 3, 3, 9 )の場合、9が返ります。

1.3.0
mean mean(e: Column)
mean(columnName: String)
グループ内での平均値を計算します。
※avgのエイリアスなのでavgと等価です。

sql:

select
  mean( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  mean( $"e" )
) 
1.4.0
min min(e: Column)
min(columnName: String)
グループ内での最小の値を返します。

sql:

select
  min( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  min( $"e" )
) 

例) グループ内アイテムが ( 1, 3, 3, 9 )の場合、1が返ります。

1.3.0
stddev stddev(e: Column)
グループのバイアスのない標準偏差を計算します。

sql:

select
  stddev( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  stddev( $"e" )
) 
1.6.0
stddev_pop stddev_pop(e: Column)
グループの母集団標準偏差を計算します。

sql:

select
  stddev_pop( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  stddev_pop( $"e" )
) 
1.6.0
stddev_samp stddev_samp(e: Column)
グループの累積標準偏差を計算します。

sql:

select
  stddev_samp( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  stddev_samp( $"e" )
) 
1.6.0
sum sum(e: Column)
sum(columnName: String)
グループ内の値を合計します。

sql:

select
  sum( e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  sum( $"e" )
) 

例) グループ内アイテムが ( 1, 3, 3, 9 )の場合、16が返ります。

1.3.0
sumDistinct sumDistinct(e: Column)
sumDistinct(columnName: String)
グループ内の重複を除いた値を合計します。
※DataFrameでは SUM( DICTINCT 〜 ) 構文が使えないのでsumDistinctを使用します。

sql:

select
  sum( distinct e )
from
  table
group by
  a

DataFrame:

df.groupBy(
  $"a"
).agg(
  sumDistinct( $"e" )
) 

例) グループ内アイテムが ( 1, 3, 3, 9 )の場合、13が返ります。

1.3.0

構文

  • SELECT .. FROM …
  • WHERE
  • JOIN
  • ORDER BY
  • LIMIT
  • GROUP BY
  • HAVING
  • CUBE
  • ROLLUP

演算子

  • 比較演算子
  • bit演算子
  • 算術演算子
  • 集合演算子
  • 論理演算子

関数

  • 文字列関数
  • 変換関数
  • 数学関数
  • 日付・時刻関数
  • 集計関数
  • Window関数
  • その他の関数

宜しければこちらの動画もどうぞー

Apache Spark part6 Zeppelinで機械学習

スクリーンショット 2015-10-30 9.26.56

https://www.youtube.com/watch?v=moZ9WeNsWgY

リクルートのポンパレデータを使って最小二乗法による回帰分析を行っています。

このエントリーをはてなブックマークに追加
Tweet

← Unity初心者がボールごろがしゲームを作る part2
よく分かるかもしれないGit動画 part2 →

 

最近書いた記事

  • Ryzen7 3800XT でmini ITXオープンフレームPCを作る
  • Pythonで機械学習入門 競馬予測
  • HP ENVY 15 クリエイターモデルレビューとRAID0解除
  • JRA-VAN データラボを使って、競馬データを収集する
  • Surface Pro 3 にubuntu18.04を入れる

カテゴリー

  • Android
  • Apache Flink
  • API
  • AWS
  • bazel
  • BigQuery
  • Cassandra
  • Docker
  • Druid
  • Elasticsearch
  • Git
  • Golang
  • gradle
  • HDFS
  • JavaScript
  • jvm
  • Linux
  • MongoDB
  • MySQL
  • Nginx
  • Nodejs
  • PaaS
  • PHP
  • Python
  • RabbitMQ
  • Raspberry Pi
  • React Native
  • Redis
  • Riak
  • rust
  • scala
  • Scheme
  • SEO
  • solr
  • Spark
  • spray
  • Sublime Text
  • Swift
  • Tableau
  • Unity
  • WebIDE
  • Wordpress
  • Youtube
  • ひとこと
  • カンファレンス
  • スケジューラ
  • マイクロマウス
  • 広告
  • 技術じゃないやつ
  • 株
  • 機械学習
  • 競馬
  • 自作キーボード
  • 自然言語処理

アーカイブ

  • 2021年4月
  • 2021年2月
  • 2021年1月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年9月
  • 2018年5月
  • 2018年3月
  • 2018年2月
  • 2017年9月
  • 2017年8月
  • 2017年6月
  • 2017年4月
  • 2017年3月
  • 2017年1月
  • 2016年10月
  • 2016年9月
  • 2016年8月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年8月
  • 2015年6月
  • 2015年5月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年9月
  • 2014年6月
  • 2014年5月
  • 2014年3月
  • 2014年2月
  • 2014年1月
  • 2013年12月
  • 2013年11月
  • 2013年10月
  • 2013年9月
  • 2013年8月

書いた人

  • バツイチちゃん
  • インケンくん

このブログについて

エンジニアとしての考え方が間逆な2人がしょーもないこと書いてます。

バツイチ

アイコン

IT業界で働くエンジニアです。名前の通りバツイチです。
理論や抽象的概念が好きだけど人に説明するのが下手。

インケン

アイコン

バツイチちゃんと同じ業界で働いています。
理論とか開発手法とかは正直どうでもよくて、
生活する上で役に立つことに使いたい

Copyright 2025 バツイチとインケンのエンジニアブログ