AWS 中国 (北京) リージョンで Hive と Presto を使用して Amazon EMR クラスターを起動すると、"The provided token is malformed or otherwise invalid (提供されたトークンの形式が不正か、別の理由で無効です)" というエラーメッセージが表示されます。

最終更新日: 2019 年 4 月 22 日

AWS 中国 (北京) リージョン (cn-north-1) で Amazon EMR クラスターを起動し、Presto と Apache Hive を使用して Amazon Simple Storage Service (Amazon S3) バケットから外部テーブルを作成しました。Hive と Presto を使用してテーブルのクエリを行うと、このようなエラーメッセージが表示されます。

presto:default> select * from mydata;
Query 20160712_072348_00009_qqx96, FAILED, 1 node
Splits: 1 total, 0 done (0.00%)
0:03 [0 rows, 0B] [0 rows/s, 0B/s]
Query 20160712_072348_00009_qqx96 failed: The provided token is malformed or otherwise invalid. (Service: Amazon S3; Status Code: 400; Error Code: InvalidToken; Request ID: 841753ED1D9E8250)

簡単な説明

このエラーが表示される理由は、S3 バケットがあるリージョンを Presto が自動的に使用しないようになっているためです。このエラーを解決するには、実行中のクラスタまたは新しいクラスターの起動時に hive.s3.pin-client-to-current-region プロパティを [true] に設定します。

解決方法

クラスターを起動中にエラーを解決するには :

1.    各ノードで [hive.properties] ファイルを開き、hive.s3.pin-client-to-current-region プロパティを [true] に設定します。例:

sudo vim /etc/presto/conf/catalog/hive.properties
hive.s3.connect-timeout=2m
hive.s3.max-backoff-time=10m
...
hive.s3.pin-client-to-current-region=true

2.    各ノードで Presto を再起動します。

sudo restart presto-server

新しいクラスターの起動中にエラーを解決するには、AWS マネジメントコンソールまたは AWS コマンドラインインターフェイス (AWS CLI) をご利用いただけます。

AWS マネジメントコンソール

1.    Amazon EMR コンソールを開きます。

2.    [クラスターを作成]を選択し、[詳細オプションに移動する] を選択します。

3.    [ソフトウェア設定] ページの [ソフトウェア設定の編集] セクションで、 [設定の入力] を選択します。

4.    設定ボックスに次のコマンドを入力します。

classification=presto-connector-hive,properties=[hive.s3.pin-client-to-current-region=True]

5.    クラスターの作成を完了します。

AWS コマンドラインインターフェイス (CLI):

create-cluster コマンドを使用します。--configurations パラメーターに指定した JSON ファイルに次の JSON テキストを入れます。詳細については、 Supplying a Configuration Using the AWS CLI when Creating a Cluster を参照してください。

[
    {
        "Classification":"presto-connector-hive",
        "Properties":{"hive.s3.pin-client-to-current-region":"true"}
    }
]

現在、中国 (北京) リージョンで Hive と Presto を使用してテーブルのクエリができます。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合