Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Databricks勉強会:Databricksにおけるプログラミング

 Databricks勉強会:Databricksにおけるプログラミング

SQLやPySparkのハンズオン込みの内容となっています。

- Databricksにおけるプログラミング
- SQL基礎
- PySpark基礎

ハンズオンで使用しているdbcファイルはこちらです。

https://sajpstorage.blob.core.windows.net/yayoi/20240717_study_meeting/202407_databricks_programming.dbc

Takaaki Yayoi

August 05, 2024
Tweet

More Decks by Takaaki Yayoi

Other Decks in Technology

Transcript

  1. ©2024 Databricks Inc. — All rights reserved 自己紹介 弥生 隆明

    (やよい たかあき) Databricksソリューションアーキテクト ▪ 2020年からデータブリックス ジャパンにお いて、プレセールス、POCに従事 ▪ 前職はコンサルティングファーム、 総合電機メーカーにてデータ分析・Web サービス構築などに従事。 インド赴任経験あり。 ▪ Qiitaでいろいろ書いています。 2 @taka_aki
  2. ©2024 Databricks Inc. — All rights reserved Apache Spark徹底入門 発売中!

    Learning Spark 2nd Editionの翻訳 + αの内容となっています! 本書は、ビッグデータを主な対象としたデータ分析フ レームワークであるApache Spark、MLflow、Delta Lakeの中級入門書です。 「動かしてみる」だけではなく、どのような 仕組みになっているのか、どうすれば効率的な実装 が行えるかまで踏み込みつつ、データAIの実装者が Apache Spark、MLflow、および Delta Lakeを使いこなすための解説を行います。
  3. ©2024 Databricks Inc. — All rights reserved 勉強会アジェンダ # アジェンダ

    時間枠 説明 1 Databricksの ベストプラクティス 2時間 • 座学+ハンズオン • Databricksワークスペースの使い方のウォークスルー • ノートブックやクラスターのベストプラクティス 2 Databricksにおける プログラミング 2時間 • 座学+ハンズオン • SQL基礎 • PySpark基礎 3 Databricksの高度な使い方 (その1) 2時間 • Unity Catalog詳細 • Databricksワークフロー(ジョブ)詳細 • Databricks Asset Bundlesによるインフラ管理 4 Databricksの高度な使い方 (その2) 2時間 • LLM関連機能のウォークスルー • サードパーティツールとの連携
  4. ©2024 Databricks Inc. — All rights reserved Databricksアシスタントを活用しましょう 困ったことがあったら検索ではなくアシスタント Databricksアシスタントは、

    次のようなタスクに役立ちます。 • コードの生成 • コードのデバッグ (エラーの識別 や修正の提案を含む) • コードの変換と最適化 • コードの説明 • Azure Databricks のドキュメント で関連情報を見つける
  5. ©2024 Databricks Inc. — All rights reserved SQLとは SQLが何かをお話しする前にデータやデータベースの話をさせてください •

    データとは • データベースとは データとは1人または複数の人や物や事象に関する定性的または定量的な値の集まりである。 データ - Wikipedia コンピューティングにおいて、 データベース は、電子的に保存され、 アクセスできる組織化された データの集合 である。 データベース - Wikipedia 氏名:やまだ たろう 年齢:25 性別:男 氏名:いしかわ はな 年齢:23 性別:女 ・・・
  6. ©2024 Databricks Inc. — All rights reserved SQLとは 大量データを管理するデータベースに問い合わせるための言語がSQLです •

    SQL(Structured Query Language)とは SQLは、関係データベース管理システム (RDBMS) において、データの操作や定義を行うための データベース言 語(問い合わせ言語) 、ドメイン固有言語である。プログラミングにおいてデータベースへのアクセスのために、 他 のプログラミング言語と併用される 。 SQL - Wikipedia 顧客データベースから特定の 顧客のデータを取り出したい 口座データベースの残高を更 新したい ユーザーが退会したのでユー ザーデータを削除したい SQLを使います SQLを使います SQLを使います
  7. ©2024 Databricks Inc. — All rights reserved SQLとは データベースにあるデータをどの様に処理するのかをSQLで記述します 行(row/record)

    列(column) • 列「Prefecture」のデータをすべてください。 • 列「pref_no」の昇順で並び替えたデータをください。 • 列「Prefecture」が「Hokkaido」であるすべての行をください。 • 列「date_timestamp」から年月を取り出し、「Prefecture」と年月ごとの「Cases」の合計をください。 テーブル「 covid_cases」
  8. ©2024 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます •

    SQLは以下のタイプから構成されています。 ◦ DDL(Data Definition Language) ▪ データベース、テーブルなどを作成、削除します ▪ CREATE/DROP/ALTER ◦ DML(Data Manipulation Language) ▪ テーブルを検索したり、変更します ▪ SELECT/INSERT/UPDATE/DELETE ◦ DCL(Data Control Language) ▪ テーブルに対する権限設定などを行います ▪ GRANT/REVOKE
  9. ©2024 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます •

    とにもかくにもSELECTからです。 ◦ SELECT(選択する)の名前が示す通り、取り出すデータを選択するために使用します。 ◦ 通常SELECTはFROM(から)と組み合わせます。FROMではデータを取り出すテーブルを指定します。 SELECT Prefecture FROM covid_cases; SELECT(選択) Prefecture FROM(から) covid_cases; covid_casesからPrefectureを選択
  10. ©2024 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます •

    SELECTをいろいろカスタマイズしていきます。 ◦ 上の例ではテーブルのすべての行を取り出してしまいます。 ◦ WHERE(そこでは〜である)と抽出条件を組み合わせることで、取り出す行を限定することができます。 SELECT * FROM covid_cases WHERE Prefecture=”Hokkaido”; SELECT(選択) * FROM(から) covid_cases WHERE(そこでは〜である ) Prefecture=”Hokkaido”; covid_casesから、そこでは Prefecture=”Hokkaido” であるすべての列 を選択 *は「すべての 列」を意味しま す。
  11. ©2024 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます •

    データベースを操作できる環境で以下の SQLを実行して、必要とするデータを取得していきます。 ◦ SELECT ◦ GROUP BY ◦ CREATE VIEW ◦ 関数 ◦ 述語(predicate) ◦ CASE ◦ UNION ◦ JOIN • データベースを操作できる環境は色々ありますが、ここでは Databricksのレイクハウスプラットフォーム を使用します。
  12. ©2024 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます •

    次に、以下のSQLを実行してテーブルを更新していきます。 ◦ INSERT ◦ UPDATE ◦ DELETE ◦ SELECT AS OF • この他にも「MERGE(INSERT + UPDATE)」などがありますが、今回は割愛します。
  13. ©2024 Databricks Inc. — All rights reserved コラム:SQLの読み方 英語の文法として読むと理解しやすいです •

    SQLの柔軟性は素晴らしいものですが、その代償としていくらでも複雑になり得ます。 • 複雑なSQLを理解するには、 ◦ フォーマットして可読性を上げ、 ◦ 英語の文を読む語順(SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY)でブロックを 把握し、 ▪ FROMに記述されているテーブルから、 ▪ WHEREに記述されている抽出条件に基づいてレコードを抽出し、 ▪ GROUP BYに指定されている集約キーでグルーピングし、 ▪ HAVINGに記述されている条件に基づいてグループを絞り込み、 ▪ ORDER BYに指定されているソートキーで並び替えて、 ▪ SELECTに指定されている列 ◦ を取得する。 • という流れで私は読んでいます。
  14. ©2024 Databricks Inc. — All rights reserved • 以下のようなSQLを想定します。 •

    大抵のIDEにはフォーマッター (formatter)が搭載されているのでそれを活用します。 コラム:SQLの読み方 サンプルで説明します。
  15. ©2024 Databricks Inc. — All rights reserved • 以下のように整形されますので、前述の順序で処理を理解します。 コラム:SQLの読み方

    サンプルで説明します。 ①default.people10mというテーブルから ②firstNameが「Mary」かつgengerが「F」のレコードを抽出し ③birthYearでグルーピングし ④birthYearの昇順で並び替え ⑤birthDateの年をbirthYearとし、グループごとの行数を totalとして取得する
  16. ©2024 Databricks Inc. — All rights reserved Sparkのご紹介 PCで処理できるデータ量であればpandasで十分ですが… •

    Apache Sparkは、多数のマシンで並列でコードを実行するための洗練された分散処理 フレームワークです。これによって、大量データも効率的に処理することができます。 • Sparkでもデータフレーム でデータを取り扱うことが可能です。Python(PySpark)やSQLなどのAPIを 提供しており、pandasとの相互運用も可能です。 pandas pandas API on Spark (旧Koalas) Apache Spark(PySpark) データセットが小さい場合は pandasが正しい選択肢となりま す。 大量データを操作する必要があ り、PySparkではなくpandas APIを活用したいと考える際に は最適な選択肢となります。 ※APIの対応状況など注意事項があります。 大量データに対する処理が必要 な場合は、Apache Sparkのよう な並列データフレームを使用す ることで高速化が期待できま す。
  17. ©2024 Databricks Inc. — All rights reserved SparkとDatabricksの関係 Databricksでは処理エンジンとしてSparkを活用しています •

    Databricks は、ビッグデータと機械学習のための統合アナリティクス エンジンである Apache Spark の上に構築されています。PySpark は、学習、実装、保守が容易な柔軟な言語である Python プロ グラミング言語を使用して Apache Spark とインターフェースするのに 役立ちます。 また、Databricks でのデータビジュアライゼーションのための多くの オプションも提供します。 • Databricksは、Apache Sparkの機能の開発とリリースを続けています。 Databricks ランタイムには、C++で書き直されたApache Sparkの最適化バージョンであるPhotonなど、Apache Spark上に構築および拡張する追加の最適化と独自の機能が含まれています。 Azure Databricks における Apache Spark - Azure Databricks | Microsoft Learn
  18. ©2024 Databricks Inc. — All rights reserved PySparkとは SparkのPython APIです

    • PySparkとは、Sparkを実行するためのPython APIです。Apache SparkとPythonの コラボレーションをサポートするためにリリースされました。開発者はPySparkを用いることで、 Pythonからデータフレームを操作する形でSparkを活用することができます。
  19. ©2024 Databricks Inc. — All rights reserved PySparkの概念 PySparkにはプログラミングを促進する様々なAPIが存在します •

    Spark SQL と DataFrames を使用したリレーショナル クエリによる構造化データの処理。 Spark SQL を使用すると、SQL クエリと Spark プログラムを混在できます。 Spark DataFrames を使用す ると、Python と SQL を使用してデータの読み取り、書き込み、変換、分析を効率的に行うことができ ます。つまり、常に Spark の全機能を活用できます。 • Spark 上の Pandas API (Pandas API on Spark)を使用して Apache Spark で動作する Pandas データ構造とデータ分析ツール。 Spark 上の Pandas API を使用すると、Pandas (テスト、小規模な データセット) と Spark (運用、分散データセット) で動作する単一のコードベースを使用して、複数の ノードに分散された Pandas ワークロードを任意のサイズにスケーリングできます。 Azure Databricks の PySpark - Azure Databricks | Microsoft Learn
  20. ©2024 Databricks Inc. — All rights reserved PySparkの概念 データフレームや遅延評価の概念を理解することが重要です Apache

    Sparkデータフレーム は、名前付き列に編成されたデータセットです。 これらは、型が異なる列 を持つ 2 次元のラベルの付いたデータ構造です。 データフレームには、一般的なデータ分析の問題を効 率的に解決できる豊富な関数セットが用意されており、組み込みのメソッドを 使用してデータを簡単に変換して、データの並べ替え、フィルター処理、集計を行うことが できます。 Azure Databricks の PySpark - Azure Databricks | Microsoft Learn
  21. ©2024 Databricks Inc. — All rights reserved PySparkの概念 データフレームや遅延評価の概念を理解することが重要です Apache

    Sparkの基礎は、変換とアクション の 2 つのデータ処理操作です。アクション操作は、count、 first、collect などの値を返します。 filter や groupByなどの変換操作はデータ フレームを返しますが、アクションによってトリガーされるまで実行されません 。 これは 遅延評価と呼ばれます。 遅延評価では、処理が定義されたときにSparkがすぐに実行するのでは なく、遅延された方法で実行を処理するため、複数の操作をチェーンすることもでき、処理を 最適化することがます。 Azure Databricks の PySpark - Azure Databricks | Microsoft Learn 変換操作 (Transformation) アクション操作 (Action)
  22. ©2024 Databricks Inc. — All rights reserved PySparkの概念 PySparkを使うにはSparkセッションが必要です •

    SparkSessionはすべてのデータフレームAPIの機能に対する単一のエントリーポイントです。 • Databricksノートブックでは自動的に変数sparkが作成されます。spark...という形で各種メソッドを呼 び出して処理を行います。
  23. ©2024 Databricks Inc. — All rights reserved PySparkの概念 メソッドを活用してデータを操作します •

    以下のようなメソッドがあります。 メソッド 説明 sql 指定されたクエリーの結果を表現するデータフレームを返却。 table 指定されたテーブルをデータフレームとして返却。 read データフレームとしてデータを読み込む際に使用できるDataFrameReaderを 返却。 range startからend(含まない)の範囲とステップ値、パーティション数を持つ要素を 含むカラムを持つデータフレームを生成。 createDataFrame タプルのリストからデータフレームを作成、主にテストで使用。
  24. ©2024 Databricks Inc. — All rights reserved ハンズオン 以下のノートブックを実行していきます •

    クラスターは Personal Compute を使用ください。 ノートブック 説明 01. SQL基礎 - テーブルの参照 テーブルの参照を通じてSQLの基礎を学びます 02. SQL基礎 - テーブルの更新 テーブルの更新を通じてSQLの基礎を学びます 03. DatabricksとApache Sparkのご紹介 DatabricksにおけるSparkの位置付けや基本を学びます。 04. PySparkことはじめ SparkのPython APIであるPySparkの基礎を学びます。
  25. ©2024 Databricks Inc. — All rights reserved ハンズオン クラスター(計算資源)を作成します •

    サイドメニューのクラスターをクリックし、右上のコンピューティングを作成 の左にある ドロップダウンリストからPersonal Computeで作成を選択します。
  26. ©2024 Databricks Inc. — All rights reserved ハンズオン クラスター(計算資源)を作成します •

    サイドメニューのクラスターをクリックし、右上のコンピューティングを作成 の左にある ドロップダウンリストからPersonal Computeで作成を選択します。
  27. ©2024 Databricks Inc. — All rights reserved ハンズオン クラスター(計算資源)を作成します •

    サイドメニューのクラスターをクリックし、右上のコンピューティングを作成 の左にある ドロップダウンリストからPersonal Computeで作成を選択します。
  28. ©2024 Databricks Inc. — All rights reserved ハンズオン クラスター(計算資源)を作成します •

    クラスター名の左のインジケーターがグリーンになるまで数分待ちます。
  29. ©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをクラスターにアタッチします •

    ワークスペース > ホームにアクセスし、クローンしたフォルダを開き、最初のノートブック01. SQL基礎 - テーブルの参照 を開きます。
  30. ©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをクラスターにアタッチします •

    左上の 接続 をクリックし、上のステップで起動したクラスターを選択します。
  31. 参考資料 • Databricks ノートブックの概要 - Azure Databricks | Microsoft Learn

    • Databricks ノートブックでコードを開発する - Azure Databricks | Microsoft Learn • 今さら聞けないSQL #Databricks - Qiita • PySparkことはじめ #Databricks - Qiita • Apache Sparkとは何か #Databricks - Qiita
  32. ©2024 Databricks Inc. — All rights reserved ハンズオン準備 送付したDBCファイルをインポートください •

    参加者が実行するノートブックは /Workspace/Shared/202407_databricks_programming に格納されることになります。
  33. ©2024 Databricks Inc. — All rights reserved ハンズオン準備 ハンズオンで使用するカタログを作成ください •

    本ハンズオンではテーブルの格納場所として 202407_handson と言うカタログを使います。 • 別添のノートブック 00. 管理者向け : カタログの準備 をメタストア管理者 の権限を持つ ユーザーで、カタログの作成 と権限の付与 のセルを実行ください。 • カタログの削除のセルはハンズオン終了後に実行ください。