Successfully reported this slideshow.

Higher order functions Lightning Talk

0

Share

Loading in …3
×
1 of 12
1 of 12

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

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

Editor's Notes

  • Exchange hashpartitioning: shuffle
    Unique key が必要
    元の配列を求める場合、collect_list が必要だが、元の順番は保証されない
    Numbers カラムに値がなければならない
  • Entire row, black box
    Serialization/deserialization cost
  • Black box として扱われるところがあり、標準カラム関数ほど早くない
    Spark SQL で利用するには、register する必要がある
  • Udf より速い
    Spark SQL で使える
    Scala API がない
  • expr や withExpr を使用せずに簡単に 高階関数を使えるようになる。

    Spark 3.0.0
  • https://www.slideshare.net/databricks/an-introduction-to-higher-order-functions-in-spark-sql-with-herman-van-hovell
  • ×