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

E-MapReduce:JindoTable を使用してテーブルとパーティションのアクセス頻度の低い統計情報を収集する

最終更新日:Jan 11, 2025

JindoTable を使用して、テーブルとパーティションのアクセス頻度の低い統計情報を収集できます。 テーブルとパーティションの最終アクセス時間に基づいて、最近アクセスされていないデータを検索できます。 これにより、データストレージを最適化し、コストを削減できます。 たとえば、データ分析シナリオでは、この機能を使用して、使用頻度の低いパーティションを低コストのストレージメディアに移動できます。

前提条件

E-MapReduce(EMR) V3.35.0 以降の V3.X.X、または EMR V4.9.0 以降の V4.X.X でクラスターが作成されていること。 詳細については、クラスターの作成をご参照ください。

背景情報

SmartData 3.5.X 以降では、JindoTable を使用して Hive、Spark、Presto テーブルのアクセス頻度の低い統計情報を収集できます。 この機能はデフォルトで無効になっています。 この機能を有効にする方法の詳細については、Spark のアクセス頻度の低い統計情報の収集を有効にするHive のアクセス頻度の低い統計情報の収集を有効にする、および Presto のアクセス頻度の低い統計情報の収集を有効にするをご参照ください。
説明 同じフックとリスナーを使用して、アクセス頻度の高い統計情報とアクセス頻度の低い統計情報を収集します。 したがって、アクセス頻度の低い統計情報の収集を有効にすると、アクセス頻度の高い統計情報の収集も有効になります。 アクセス頻度の高い統計情報の収集の詳細については、JindoTable を使用してテーブルとパーティションのアクセス頻度統計を収集するをご参照ください。

制限事項

  • Data Lake Formation(DLF)メタデータはサポートされていません。
  • Hive CLI、HiveServer2、Spark SQL CLI、Spark Thrift Server、および Presto サービスが存在するノードの IP アドレスから、基盤となるメタデータストレージ(MySQL や ApsaraDB RDS など)にアクセスするための権限が必要です。
  • JindoTable を使用して、Hive、Spark、Presto テーブルのアクセス頻度の低い統計情報のみを収集できます。

アクセス頻度の低い統計情報のクエリ

コマンドを実行して、アクセス頻度の低い統計情報をクエリできます。
  • 構文
    jindo table -leastUseStat -n <num> [-i/-ignoreNever]

    num は、クエリするテーブルまたはパーティションの数を示します。 このパラメーターを正の整数に設定します。 -i/-ignoreNever はオプションのパラメーターです。 このパラメーターを指定すると、アクセスされたことのないテーブルまたはパーティションは除外されます。

  • 説明

    このコマンドは、最も長い間アクセスされていないテーブルまたはパーティションをクエリするために使用されます。

  • 例:最も長い間アクセスされていない最初の 20 個のテーブルまたはパーティションをクエリします。
    jindo table -leastUseStat -n 20
    次の図は出力を示しています。 cold_result
    • 最初の列には、データベース名.テーブル名 形式のテーブルが一覧表示されます。
    • 2 番目の列には、最初のパーティションキー列 = 列値/2 番目のパーティションキー列 = 列値/... 形式のパーティションが一覧表示されます。 パーティション化されていないテーブルの場合、この列は空です。
    • 3 番目の列には、テーブルまたはパーティションの最終アクセス時間が yyyy-MM-dd HH:mm:ss 形式で表示されます。
    説明 パーティション化されたテーブルの場合、パーティションレベルのアクセス統計情報のみが表示されます。 テーブルレベルのアクセス統計情報は表示されません。

JindoTable の使用方法の詳細については、JindoTable の使用をご参照ください。

Spark のアクセス頻度の低い統計情報の収集を有効にする

  1. Spark サービスページに移動します。
    1. Alibaba Cloud EMR コンソールにログインします。
    2. 上部のナビゲーションバーで、クラスターが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します
    3. [クラスター管理] タブをクリックします。
    4. [クラスター管理] ページで、クラスターを見つけて、[アクション] 列の [詳細] をクリックします。
    5. 左側のナビゲーションペインで、[クラスターサービス] > [spark] を選択します。
  2. Spark サービスページで、[構成] タブをクリックします。
  3. spark.sql.queryExecutionListeners パラメーターを検索し、値に com.aliyun.emr.table.spark.SparkSQLQueryListener が含まれているかどうかを確認します。 値にこのリスナーが含まれていない場合は、リスナーを値に追加します。 複数のリスナーはカンマ (,) で区切ります。
    Spark
  4. カスタム構成を追加します。
    1. [サービス構成] セクションで、[spark-defaults] タブをクリックします。
    2. 右上隅にある [カスタム構成] をクリックします。
    3. [構成項目の追加] ダイアログボックスで、[spark.sql.query.update.access.time.enabled] パラメーターを追加し、[true] に設定します。
      add_spark_paraname
    4. [OK] をクリックします。
  5. 構成を保存します。
    1. 右上隅にある [保存] をクリックします。
    2. [変更の確認] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。
  6. すべてのコンポーネントを再起動します。
    1. Spark サービスページの右上隅で、[アクション] > [すべてのコンポーネントの再起動] を選択します。
    2. [クラスターアクティビティ] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。
    3. [確認] メッセージで、[OK] をクリックします。

Hive のアクセス頻度の低い統計情報の収集を有効にする

  1. Hive サービスページに移動します。
    1. Alibaba Cloud EMR コンソールにログインします。
    2. 上部のナビゲーションバーで、クラスターが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します
    3. [クラスター管理] タブをクリックします。
    4. [クラスター管理] ページで、クラスターを見つけて、[アクション] 列の [詳細] をクリックします。
    5. 左側のナビゲーションペインで、[クラスターサービス] > [hive] を選択します。
  2. Hive サービスページで、[構成] タブをクリックします。
  3. hive.exec.post.hooks パラメーターを検索し、値に com.aliyun.emr.table.hive.HivePostHook が含まれているかどうかを確認します。 値にこのフックが含まれていない場合は、フックを値に追加します。 複数のフックはカンマ (,) で区切ります。
    hive
  4. カスタム構成を追加します。
    1. [サービス構成] セクションで、[hive-site] タブをクリックします。
    2. 右上隅にある [カスタム構成] をクリックします。
    3. [構成項目の追加] ダイアログボックスで、[hive.hook.update.access.time.enabled] パラメーターを追加し、[true] に設定します。
      add_hive_paraname
    4. [OK] をクリックします。
  5. 構成を保存します。
    1. 右上隅にある [保存] をクリックします。
    2. [変更の確認] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。
  6. すべてのコンポーネントを再起動します。
    1. Spark サービスページの右上隅で、[アクション] > [すべてのコンポーネントの再起動] を選択します。
    2. [クラスターアクティビティ] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。
    3. [確認] メッセージで、[OK] をクリックします。

Presto のアクセス頻度の低い統計情報の収集を有効にする

  1. Presto サービスページに移動します。
    1. Alibaba Cloud EMR コンソールにログインします。
    2. 上部のナビゲーションバーで、クラスターが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します
    3. [クラスター管理] タブをクリックします。
    4. [クラスター管理] ページで、クラスターを見つけて、[アクション] 列の [詳細] をクリックします。
    5. 左側のナビゲーションペインで、[クラスターサービス] > [presto] を選択します。
  2. Presto サービスページで、[構成] タブをクリックします。
  3. event-listener.name パラメーターを検索し、値に jindo-presto-post-event-listener が含まれているかどうかを確認します。 値にこのリスナーが含まれていない場合は、リスナーを値に追加します。
    presto
  4. カスタム構成を追加します。
    1. [サービス構成] セクションで、[event-listener.properties] タブをクリックします。
    2. 右上隅にある [カスタム構成] をクリックします。
    3. [構成項目の追加] ダイアログボックスで、[listener.update.access.time.enabled] パラメーターを追加し、[true] に設定します。
      add_presto_paraname
    4. [OK] をクリックします。
  5. 構成を保存します。
    1. 右上隅にある [保存] をクリックします。
    2. [変更の確認] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。
  6. すべてのコンポーネントを再起動します。
    1. Spark サービスページの右上隅で、[アクション] > [すべてのコンポーネントの再起動] を選択します。
    2. [クラスターアクティビティ] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。
    3. [確認] メッセージで、[OK] をクリックします。