Slide 1

Slide 1 text

©2024 Databricks Inc. — All rights reserved Databricks勉強会 2024/7/17 Databricksにおけるプログラミング

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

©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関連機能のウォークスルー ● サードパーティツールとの連携

Slide 5

Slide 5 text

アジェンダ ● Databricksにおけるプログラミング ● SQL基礎 ● PySpark基礎

Slide 6

Slide 6 text

©2024 Databricks Inc. — All rights reserved Databricksにおけるプログラミング 6

Slide 7

Slide 7 text

©2024 Databricks Inc. — All rights reserved Databricksにおけるプログラミング ノートブックやIDEを活用してプログラムを記述、実行します

Slide 8

Slide 8 text

©2024 Databricks Inc. — All rights reserved Databricksアシスタントを活用しましょう 困ったことがあったら検索ではなくアシスタント Databricksアシスタントは、 次のようなタスクに役立ちます。 ● コードの生成 ● コードのデバッグ (エラーの識別 や修正の提案を含む) ● コードの変換と最適化 ● コードの説明 ● Azure Databricks のドキュメント で関連情報を見つける

Slide 9

Slide 9 text

©2024 Databricks Inc. — All rights reserved フォーマット機能を活用しましょう 可読性は大事です

Slide 10

Slide 10 text

©2024 Databricks Inc. — All rights reserved SQL基礎 10

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

©2024 Databricks Inc. — All rights reserved SQLとは クライアントからデータベースに問い合わせる際にSQLが使用されます

Slide 14

Slide 14 text

©2024 Databricks Inc. — All rights reserved SQLとは データベースにあるデータをどの様に処理するのかをSQLで記述します 行(row/record) 列(column) ● 列「Prefecture」のデータをすべてください。 ● 列「pref_no」の昇順で並び替えたデータをください。 ● 列「Prefecture」が「Hokkaido」であるすべての行をください。 ● 列「date_timestamp」から年月を取り出し、「Prefecture」と年月ごとの「Cases」の合計をください。 テーブル「 covid_cases」

Slide 15

Slide 15 text

©2024 Databricks Inc. — All rights reserved SQLとは 『列「Prefecture」のデータをすべてください』のSQLです 列(column) テーブル「 covid_cases」 SELECT Prefecture FROM covid_cases;

Slide 16

Slide 16 text

©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

Slide 17

Slide 17 text

©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を選択

Slide 18

Slide 18 text

©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” であるすべての列 を選択 *は「すべての 列」を意味しま す。

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

©2024 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます ● 次に、以下のSQLを実行してテーブルを更新していきます。 ○ INSERT ○ UPDATE ○ DELETE ○ SELECT AS OF ● この他にも「MERGE(INSERT + UPDATE)」などがありますが、今回は割愛します。

Slide 21

Slide 21 text

©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に指定されている列 ○ を取得する。 ● という流れで私は読んでいます。

Slide 22

Slide 22 text

©2024 Databricks Inc. — All rights reserved ● 以下のようなSQLを想定します。 ● 大抵のIDEにはフォーマッター (formatter)が搭載されているのでそれを活用します。 コラム:SQLの読み方 サンプルで説明します。

Slide 23

Slide 23 text

©2024 Databricks Inc. — All rights reserved ● 以下のように整形されますので、前述の順序で処理を理解します。 コラム:SQLの読み方 サンプルで説明します。 ①default.people10mというテーブルから ②firstNameが「Mary」かつgengerが「F」のレコードを抽出し ③birthYearでグルーピングし ④birthYearの昇順で並び替え ⑤birthDateの年をbirthYearとし、グループごとの行数を totalとして取得する

Slide 24

Slide 24 text

©2024 Databricks Inc. — All rights reserved PySpark基礎 24

Slide 25

Slide 25 text

©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のよう な並列データフレームを使用す ることで高速化が期待できま す。

Slide 26

Slide 26 text

©2024 Databricks Inc. — All rights reserved Sparkの処理の流れ - YouTube

Slide 27

Slide 27 text

©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

Slide 28

Slide 28 text

©2024 Databricks Inc. — All rights reserved PySparkとは SparkのPython APIです ● PySparkとは、Sparkを実行するためのPython APIです。Apache SparkとPythonの コラボレーションをサポートするためにリリースされました。開発者はPySparkを用いることで、 Pythonからデータフレームを操作する形でSparkを活用することができます。

Slide 29

Slide 29 text

©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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

©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)

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

©2024 Databricks Inc. — All rights reserved ハンズオン 34

Slide 35

Slide 35 text

©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の基礎を学びます。

Slide 36

Slide 36 text

©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをご自身のホームディレクトリにクローン(コピー)します ● ノートブックは /Workspace/Shared/202407_databricks_programming に格納されて います。

Slide 37

Slide 37 text

©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをご自身のホームディレクトリにクローン(コピー)します ● ノートブックは /Workspace/Shared/202407_databricks_programming に格納されて います。

Slide 38

Slide 38 text

©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをご自身のホームディレクトリにクローン(コピー)します ● ノートブックは /Workspace/Shared/202407_databricks_programming に格納されて います。

Slide 39

Slide 39 text

©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをご自身のホームディレクトリにクローン(コピー)します ● ノートブックは /Workspace/Shared/202407_databricks_programming に格納されて います。

Slide 40

Slide 40 text

©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをご自身のホームディレクトリにクローン(コピー)します ● ノートブックは /Workspace/Shared/202407_databricks_programming に格納されて います。

Slide 41

Slide 41 text

©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをご自身のホームディレクトリにクローン(コピー)します ● ノートブックは /Workspace/Shared/202407_databricks_programming に格納されて います。

Slide 42

Slide 42 text

©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをご自身のホームディレクトリにクローン(コピー)します ● ノートブックは /Workspace/Shared/202407_databricks_programming に格納されて います。

Slide 43

Slide 43 text

©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをご自身のホームディレクトリにクローン(コピー)します ● これでご自身のホームディレクトリにノートブックがクローンされました。

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

©2024 Databricks Inc. — All rights reserved ハンズオン クラスター(計算資源)を作成します ● クラスター名の左のインジケーターがグリーンになるまで数分待ちます。

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをクラスターにアタッチします ● 左上の 接続 をクリックし、上のステップで起動したクラスターを選択します。

Slide 50

Slide 50 text

©2024 Databricks Inc. — All rights reserved ハンズオン ノートブックをクラスターにアタッチします ● これでハンズオンの準備が整いました!

Slide 51

Slide 51 text

©2024 Databricks Inc. — All rights reserved ハンズオンが終わったら クラスターを停止しましょう 51

Slide 52

Slide 52 text

参考資料 ● Databricks ノートブックの概要 - Azure Databricks | Microsoft Learn ● Databricks ノートブックでコードを開発する - Azure Databricks | Microsoft Learn ● 今さら聞けないSQL #Databricks - Qiita ● PySparkことはじめ #Databricks - Qiita ● Apache Sparkとは何か #Databricks - Qiita

Slide 53

Slide 53 text

©2024 Databricks Inc. — All rights reserved 管理者による準備 53

Slide 54

Slide 54 text

©2024 Databricks Inc. — All rights reserved ハンズオン準備 送付したDBCファイルをインポートください ● 参加者が実行するノートブックは /Workspace/Shared/202407_databricks_programming に格納されることになります。

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

©2024 Databricks Inc. — All rights reserved