Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Higher order functions Lightning Talk

228 views

Published on

Spark Meetup Tokyo #2 Lightning Talk: Higher order functions

高階関数をちょっと深掘りしてみた

Published in: Software
  • Be the first to comment

  • Be the first to like this

Higher order functions Lightning Talk

  1. 1. 高階関数(Higher-Order Functions)を ちょっと深掘りしてみた Spark Meetup Tokyo #2 Kamuela Lau (@kamu_lau) Software Engineer, Consultant at Rondhuit
  2. 2. 自己紹介 Kamuela Lau (twitter: @kamu_lau) ● 株式会社ロンウイット ○ ソフトウェアエンジニア・コンサルタント ● Georgia Institute of Technology ○ コンピュータサイエンス・機械学習特化修士 課程に在学中 ● 記事執筆 ○ https://codezine.jp/author/1834 ○ https://jp.kamulau.com
  3. 3. 高階関数(Higher-order function)とは? ● 以下の条件のいずれかを満たすような関数は高階関数 (higher-order function)と呼ぶ ○ 引数として関数を受け取る ○ 戻りとして関数を返す ● Apache Spark 2.4.0 で以下の高階関数が追加された ○ transform ○ filter ○ aggregate ○ exists ○ zip_with
  4. 4. LT の目的 GOALS: ● 高階関数を含めていくつかの手法で同じ処理を 実行 ● 処理結果と explain の出力を比較 ● Spark 3.0.0 の高階関数 NON-GOALS: ● UDF と Built-in Functions (Spark の標準のカラ ム関数)のパフォーマンス差の詳細な解説・検証 https://github.com/Kamulau/higher-order-functions-exercise 本LTの高階関数のScala コードは以下の GitHub レポジトリ で公開中
  5. 5. 高階関数と他手法の比較 ● “key” という文字列型カラムと “numbers”という整数配列型カラムが存在する DataFrame があるとする ● 高階関数「aggregate」を含めて、いくつかの方法で “numbers” の平均値を 持つカラムを追加し比較する
  6. 6. Spark における整数配列の平均計算方法 ● explode と groupBy ● map ● udf ● aggregate (高階関数)
  7. 7. explode と groupBy による結果と explain の出力
  8. 8. map による結果と explain の出力
  9. 9. udf による結果と explain の出力
  10. 10. 高階関数による結果と explain の出力
  11. 11. Spark 3.0.0 で高階関数の Scala API が追加 Spark 3.0.0 で高階関数の Scala API が追加される。以下のように簡単に呼べる
  12. 12. 参考文献・投稿 ● Introducing New Built-in and Higher-Order Functions for Complex Data Types in Apache Spark 2.4 https://databricks.com/blog/2018/11/16/introducing-new-built-in-functions-and-higher-order-functions-for-complex-data-types-in- apache-spark.html ● Working with Nested Data Using Higher Order Functions in SQL on Databricks https://databricks.com/blog/2017/05/24/working-with-nested-data-using-higher-order-functions-in-sql-on-databricks.html ● SPARK-27297 Add higher order functions to Scala API https://issues.apache.org/jira/browse/SPARK-27297 ● SPARK-27297 PR https://github.com/apache/spark/pull/24232

×