すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:Notebook を使用して Spark SQL ジョブを開発する

最終更新日:May 08, 2025

Notebook は、ジョブ編集、データ分析、データの可視化などの機能を提供するインタラクティブなデータ分析および開発プラットフォームです。 Notebook を使用して Spark SQL ジョブを開発する場合、データ管理 (DMS) の Notebook 機能を使用してジョブ開発を完了できます。

前提条件

  • AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスターが作成されていること。

  • AnalyticDB for MySQL クラスター用にジョブリソースグループが作成されていること。

  • AnalyticDB for MySQL クラスター用にデータベースアカウントが作成されていること。

  • AnalyticDB for MySQL が、他のクラウドリソースにアクセスするために AliyunADBSparkProcessingDataRole ロールをアシュームするように承認されていること。

  • AnalyticDB for MySQL クラスター用に Spark アプリケーションのログストレージパスが構成されていること。

    説明

    AnalyticDB for MySQL コンソールにログオンします。 管理するクラスターを見つけ、クラスター ID をクリックします。 左側のナビゲーションウィンドウで、ジョブを開発する > Spark Jar 開発 を選択します。 ログ設定 をクリックします。 表示されるダイアログボックスで、デフォルトパスを選択するか、カスタムストレージパスを指定します。 カスタムストレージパスを OSS のルートディレクトリに設定することはできません。 カスタムストレージパスに少なくとも 1 つのフォルダレイヤーが含まれていることを確認してください。

  • AnalyticDB for MySQL クラスターと同じリージョンに Object Storage Service (OSS) バケットが作成されていること。

制限事項

Notebook 機能は、中国 (杭州) リージョンでのみサポートされています。

手順

  1. ワークスペースを作成して移動します。

    1. DMS コンソール V5.0 にログオンします。
    2. 左上隅にある 2023-01-28_15-57-17.png アイコンにポインターを移動し、[すべての機能] > [データ + AI] > [Notebook] を選択します。

      説明

      DMS コンソールを通常モードで使用している場合は、上部のナビゲーションバーで [データ + AI] > [Notebook] を選択します。

    3. [ワークスペースの作成] をクリックします。 [ワークスペースの作成] ダイアログボックスで、[ワークスペース名] パラメーターと [リージョン] パラメーターを構成し、[OK] をクリックします。

    4. ワークスペースに移動するには、ワークスペースの [アクション] 列にある [ワークスペースに移動] をクリックします。

  2. (オプション) ワークスペースメンバーを追加する。 ワークスペースに複数のユーザーがいる場合は、この手順を実行して各ユーザーに異なるロールを割り当てる必要があります。

  3. コードストレージを構成します。

    1. image タブで、[ストレージ管理] をクリックします。

    2. [コードストレージ] セクションで OSS パスを構成します。

  4. リソースを追加します。

    1. image タブで、[リソース構成] をクリックします。

    2. リソースを追加リソースの追加 をクリックします。 パネルで、次の表に示すパラメーターを構成します。

      パラメーター

      必須

      説明

      [リソース名]

      はい

      リソースの名前。 カスタム名を入力できます。

      [リソースの概要]

      はい

      リソースの説明。 リソースの目的を入力できます。

      [イメージ]

      はい

      Spark3.5+Python3.9 のみがサポートされています。

      AnalyticDB インスタンス

      はい

      AnalyticDB for MySQL クラスターの ID。

      説明

      目的のクラスターが見つからない場合は、クラスターが DMS に登録されているかどうかを確認してください。

      [AnalyticDB リソースグループ]

      はい

      ジョブリソースグループの名前。

      [エグゼキューター仕様]

      はい

      Spark エグゼキューターのリソース仕様。 この例では、デフォルトの中程度の仕様が使用されています。

      異なるリソースタイプは異なる仕様に対応しています。 詳細については、「Spark アプリケーションの構成パラメーター」トピックの「タイプ」列を参照してください。

      [最大エグゼキューター数]

      [最小エグゼキューター数]

      はい

      Spark エグゼキューターの数。

      [Spark3.5+Python3.9] イメージを選択すると、[最小エグゼキューター数] パラメーターは自動的に 2 に設定され、[最大エグゼキューター数] パラメーターは自動的に 8 に設定されます。

      [Notebook 仕様]

      はい

      Notebook の仕様。 この例では、General_Tiny_v1 (1 コア、4 GB) が使用されています。

      [VPC ID]

      はい

      AnalyticDB for MySQL クラスターが存在する VPC (Virtual Private Cloud)。 これにより、Notebook が AnalyticDB for MySQL クラスターと通信できるようになります。

      重要

      AnalyticDB for MySQL クラスターの VPC と vSwitch を変更する場合は、リソースの [VPC ID] パラメーターと [VSwitch ID] パラメーターを新しい VPC と vSwitch に変更する必要があります。 そうしないと、ジョブの送信が失敗する可能性があります。

      [ゾーン ID]

      はい

      AnalyticDB for MySQL クラスターが存在するゾーン。

      [VSwitch ID]

      はい

      AnalyticDB for MySQL クラスターが接続されている vSwitch。

      [セキュリティグループ ID]

      はい

      使用可能なセキュリティグループ。 これにより、Notebook が AnalyticDB for MySQL クラスターと通信できるようになります。

      [リソースの解放]

      はい

      リソースが自動的に解放されるまでのアイドル状態の期間。

      [依存 JAR]

      いいえ

      JAR パッケージの OSS ストレージパス。 Python でジョブを送信し、JAR パッケージを使用する場合にのみ、このパラメーターを指定します。

      [SparkConf]

      いいえ

      Apache Spark のパラメーターと同様の構成パラメーター。 パラメーターは key: value 形式である必要があります。 Apache Spark のパラメーターとは異なる構成パラメーター、または AnalyticDB for MySQL 固有の構成パラメーターについては、Spark アプリケーションの構成パラメーターを参照してください。

    3. [保存] をクリックします。

    4. リソースを起動するには、リソースの [アクション] 列にある [開始] をクリックします。

  5. データを初期化します。

    1. 左上隅にある 2023-01-28_15-57-17.png アイコンにポインターを移動し、[すべての機能] > [データ資産] > [インスタンス] を選択します。

    2. [+新規] をクリックします。 [インスタンスの追加] ダイアログボックスで、次の表に示すパラメーターを構成します。

      パラメーター

      説明

      [データソース]

      [Alibaba Cloud] タブで、[OSS] を選択します。

      [基本情報]

      [ファイルとログのストレージ]

      このパラメーターは自動的に [OSS] に設定されます。

      [インスタンスリージョン]

      AnalyticDB for MySQL クラスターが存在するリージョン。

      [接続方法]

      このパラメーターは自動的に [接続文字列アドレス] に設定されます。

      [接続文字列アドレス]

      値を [oss-cn-hangzhou.aliyuncs.com] に設定します。

      [バケット]

      バケットの名前。

      [アクセスモード]

      アクセス方法。 この例では、[セキュリティホスティング - 手動] が使用されています。

      [AccessKey ID]

      OSS にアクセスする権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。

      AccessKey ID と AccessKey シークレットを取得する方法については、アカウントと権限を参照してください。

      [AccessKey Secret]

      OSS にアクセスする権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey シークレット。

      AccessKey ID と AccessKey シークレットを取得する方法については、アカウントと権限を参照してください。

      [詳細情報]

      オプションのパラメーター。 詳細については、「Alibaba Cloud データベースインスタンスを登録する」トピックの「詳細情報」セクションを参照してください。

    3. 上記のパラメーターを構成した後、左下隅にある [接続テスト] をクリックします。

      説明

      接続テストが失敗した場合は、エラーメッセージに基づいてインスタンス情報を確認してください。

    4. [接続成功] メッセージが表示されたら、[送信] をクリックします。

    5. ワークスペースに移動し、image タブをクリックします。

    6. [データレイクデータ] タブで、[OSS の追加] をクリックし、手順 b で指定したバケットを選択します。

  6. Notebook を作成します。

    image タブで、image アイコンをクリックし、[Notebook] を選択します。

    image

  7. Notebook ページで Spark SQL ジョブを開発します。

    説明

    Notebook ページのボタンについては、「Notebook を使用してデータをクエリおよび分析する」トピックの「Notebook UI」セクションを参照してください。

    1. 次のコマンドを実行して、Python 依存関係をダウンロードします。

      pip install delta
    2. セルのタイプを SQL に切り替え、次のステートメントを実行してデータベースを作成します。

      説明

      手順 b で作成された db_delta データベースと手順 c で作成された sample_data 外部テーブルは、AnalyticDB for MySQL クラスターに自動的に表示されます。 AnalyticDB for MySQL コンソールで sample_data テーブルを分析できます。

      image

      CREATE DATABASE db_delta 
      LOCATION 'oss://testBucketName/db_delta/';    -- db_delta データベースのデータのストレージパスを指定します。
    3. セルのタイプをコードに切り替え、次のコードを実行して sample_data という名前の外部テーブルを作成し、テーブルにデータを挿入します。 sample_data 外部テーブルのデータは、手順 b で指定した OSS パスに格納されます。

      # -*- coding: utf-8 -*-
      
      import pyspark
      from delta import *
      from pyspark.sql.types import *
      from pyspark.sql.functions import *
      
      
      print("Starting Delta table creation")
      
      data = [
          ("Robert", "Baratheon", "Baratheon", "Storms End", 48),
          ("Eddard", "Stark", "Stark", "Winterfell", 46),
          ("Jamie", "Lannister", "Lannister", "Casterly Rock", 29),
          ("Robert", "Baratheon", "Baratheon", "Storms End", 48),
          ("Eddard", "Stark", "Stark", "Winterfell", 46),
          ("Jamie", "Lannister", "Lannister", "Casterly Rock", 29),
          ("Robert", "Baratheon", "Baratheon", "Storms End", 48),
          ("Eddard", "Stark", "Stark", "Winterfell", 46),
          ("Jamie", "Lannister", "Lannister", "Casterly Rock", 29)
              ]
      
      schema = StructType([
          StructField("firstname", StringType(), True),
          StructField("lastname", StringType(), True),
          StructField("house", StringType(), True),
          StructField("location", StringType(), True),
          StructField("age", IntegerType(), True)
      ])
      
      sample_dataframe = spark.createDataFrame(data=data, schema=schema)
      
      sample_dataframe.write.format("delta").mode("overwrite").option('mergeSchema','true').saveAsTable("db_delta.sample_data")
      # デルタテーブルの作成を開始
      
      # データ
      
      # スキーマ
      
      # サンプルデータフレーム
      
      # sample_data テーブルを上書きモードで保存
      
    4. セルのタイプを SQL に切り替え、次のステートメントを実行して sample_data テーブルからデータをクエリします。

      SELECT * FROM db_delta.sample_data;
  8. AnalyticDB for MySQL コンソールで Spark SQL を使用して sample_data テーブルを分析するには、次の手順を実行します。

    1. AnalyticDB for MySQL コンソールにログオンします。 コンソールの左上隅で、リージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。 クラスターリスト ページで、エディションタブをクリックします。 管理するクラスターを見つけ、クラスター ID をクリックします。

    2. 左側のナビゲーションウィンドウで、ジョブを開発する > Sql開発 を選択します。 表示されるページで、Spark エンジンとインタラクティブリソースグループを選択します。

    3. sample_data テーブルからデータをクエリします。

      SELECT * FROM db_delta.sample_data LIMIT 1000;

関連情報

Notebook: Notebook に関する情報を説明します。