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

E-MapReduce:EMR の Hive または Spark からの OSS-HDFS へのアクセス

最終更新日:Jun 23, 2026

バージョン 3.42 以降、またはバージョン 5.8.0 以降を実行している E-MapReduce (EMR) クラスターは、データストアとして OSS-HDFS (JindoFS) をサポートしています。OSS-HDFS は、キャッシュアクセラレーションと Ranger 認証を提供し、Hive または Spark を使用するビッグデータ ETL シナリオのパフォーマンス向上と HDFS 移行の簡素化に役立ちます。このトピックでは、EMR クラスターの Hive または Spark を使用して OSS-HDFS のデータにアクセスする方法について説明します。

背景情報

OSS-HDFS は、クラウドネイティブのデータレイクストレージサービスです。統一されたメタデータ管理により、HDFS ファイルシステムインターフェイスと完全に互換性があり、包括的な POSIX サポートを提供します。これにより、ビッグデータや AI における幅広いデータレイクコンピューティングシナリオに最適です。詳細については、「OSS-HDFS とは」をご参照ください。

前提条件

EMR クラスターを作成済みであること。詳細については、「クラスターの作成」をご参照ください。

操作手順

  1. ステップ1:OSS-HDFS の有効化
  2. ステップ2:OSS-HDFS エンドポイントの取得
  3. ステップ3:EMR クラスターでの OSS-HDFS の使用

ステップ1:OSS-HDFS の有効化

OSS-HDFS を有効にし、必要なアクセス権限を付与します。詳細については、「OSS-HDFS の有効化」をご参照ください。

ステップ2:OSS-HDFS エンドポイントの取得

OSS コンソールのバケットの Overview ページで、[アクセスドメイン名] セクションの [HDFS サービス] 行からエンドポイントをコピーします。このエンドポイントは、ステップ3:EMR クラスターでの OSS-HDFS の使用 で Hive テーブルを作成するために必要です。エンドポイントのフォーマットは <Bucket-name>.<region>.oss-dls.aliyuncs.com です。

ステップ3:EMR クラスターでの OSS-HDFS の使用

説明 このトピックでは、Hive を例として、OSS-HDFS のデータを操作する方法を説明します。Spark でも同様の手順で操作できます。
  1. クラスターにログインします。詳細については、「クラスターへのログイン」をご参照ください。
  2. OSS-HDFS を指す Hive テーブルを作成します。
    1. 次のコマンドを実行して、Hive コマンドラインに入ります。
      hive
    2. 次のコマンドを実行して、OSS-HDFS を指すデータベースを作成します。
      CREATE DATABASE if not exists dw LOCATION 'oss://<your-oss-hdfs-endpoint>/<path>';
      説明
      • 上記のコマンドで、dw はデータベース名、<path> は任意のパス、<your-oss-hdfs-endpoint>ステップ2:OSS-HDFS エンドポイントの取得 で取得した OSS-HDFS エンドポイントです。
      • この例では、OSS-HDFS エンドポイントをパスプレフィックスとして使用します。バケット名のみを使用して OSS-HDFS を指すようにしたい場合は、バケットレベルまたはグローバルエンドポイントを設定できます。詳細については、「EMR 以外のクラスターから OSS-HDFS への接続」をご参照ください。
    3. 次のコマンドを実行して、新しいデータベースを使用します。
      use dw;
    4. 次のコマンドを実行して、新しいデータベースにテーブルを作成します。
      CREATE TABLE IF NOT EXISTS employee(eid int, name String,salary String,destination String)
      COMMENT 'Employee details';
    5. 次のコマンドを実行して、テーブル情報を表示します。
      desc formatted employee;
      次の出力が返されます。Location フィールドは、テーブルが OSS-HDFS 上のパスを指していることを示しています。
      # col_name              data_type               comment
      eid                     int
      name                    string
      salary                  string
      destination             string
      # Detailed Table Information
      Database:               dw
      Owner:                  root
      CreateTime:             Fri May 06 16:40:06 CST 2022
      LastAccessTime:         UNKNOWN
      Retention:              0
      Location:               oss://****.cn-hangzhou.oss-dls.aliyuncs.com/dw/employee
      Table Type:             MANAGED_TABLE
  3. テーブルにデータを挿入します。
    INSERT INTO 文を使用して、テーブルにデータを書き込みます。この文は MapReduce ジョブを生成します。
    INSERT INTO employee(eid, name, salary, destination) values(1, 'John Doe', '100.0', '');
  4. テーブルデータを確認します。
    SELECT * FROM employee WHERE eid = 1;
    出力には、挿入したデータが含まれます。
    OK
    1       John Doe 100.0
    Time taken: 12.379 seconds, Fetched: 1 row(s)

EMR クラスターへの権限付与

ご利用の EMR クラスターがデフォルトの AliyunECSInstanceForEMRRole インスタンス RAM ロールを使用していない場合は、クラスターに権限を付与する必要があります。

AliyunECSInstanceForEMRRole インスタンス RAM ロールは AliyunECSInstanceForEMRRolePolicy ポリシーに関連付けられており、このポリシーにはデフォルトで oss:PostDataLakeStorageFileOperation 権限が含まれています。したがって、デフォルトのロールを使用するクラスターは、追加の権限付与なしで OSS-HDFS にアクセスできます。