Hologres で MaxCompute テーブルのデータに対するクエリを高速化する際に、関連する権限が付与されていない場合はエラーが発生する可能性があります。このトピックでは、MaxCompute の権限に関するよくある質問への回答を提供します。
FAQ
MaxCompute テーブルのデータをクエリするときに、「xxx に対する 'odps:Select' 権限がありません」というエラーメッセージが返されるのはなぜですか?
問題の説明
Hologres コンソールで外部テーブルを作成した後、ソース MaxCompute テーブルのデータをクエリできません。「xxx に対する 'odps:Select' 権限がありません」というエラーメッセージが返されます。
原因
現在の RAM(Resource Access Management)ユーザーには、MaxCompute テーブルのデータに対する SELECT 権限が付与されていません。
解決策
MaxCompute 管理者に連絡して、現在の RAM ユーザーに MaxCompute テーブルのデータに対する SELECT 権限を付与してもらってください。詳細については、「MaxCompute の権限」をご参照ください。
MaxCompute テーブルのデータをクエリするときに、「列 'xxx' の機密ラベルは 2 ですが、有効なラベルは 0 です」というエラーメッセージが返されるのはなぜですか?
問題の説明
Hologres コンソールで外部テーブルを作成した後、ソース MaxCompute テーブルのデータをクエリできません。「列 'xxx' の機密ラベルは 2 ですが、有効なラベルは 0 です」というエラーメッセージが返されます。
原因
現在の RAM ユーザーには、MaxCompute テーブルの一部のフィールドのみをクエリする権限が付与されています。
解決策
この問題を解決するには、次のいずれかの方法を選択できます。
(推奨)DingTalk グループに参加し、DingTalk グループのテクニカルサポートに連絡して、Hologres インスタンスを V0.8 にアップグレードします。詳細については、「Hologres のオンラインサポートを受ける」をご参照ください。
既存のクエリステートメントの前に次のパラメーターを追加します。
set hg_experimental_enable_odps_executor=on; set hg_experimental_enable_query_master=on;MaxCompute テーブルのすべてのフィールドをクエリする権限を取得します。詳細については、「MaxCompute の権限」をご参照ください。
MaxCompute プロジェクトを跨いで MaxCompute テーブルを選択するときに、「xxx に対する 'odps:Select' 権限がありません」というエラーメッセージが返されるのはなぜですか?
問題の説明
使用している RAM ユーザーには、プロジェクト 2 の MaxCompute テーブルのデータをクエリする権限が付与されています。ただし、プロジェクト 1 のデータをクエリするために MaxCompute テーブルを選択すると、「xxx に対する 'odps:Select' 権限がありません」というエラーメッセージが返されます。
原因
現在の RAM ユーザーには、プロジェクト 2 の既存の MaxCompute テーブルのデータをクエリする権限が付与されています。ただし、プロジェクト 1 のデータをクエリし、プロジェクト 2 に属する MaxCompute テーブルを選択すると、エラーメッセージが返されます。これは、RAM ユーザーに、プロジェクトを跨ぐパッケージベースのリソース共有に基づいてプロジェクト 2 に対する権限が付与されているためです。SQL ステートメントを追加することで、この問題を解決できます。
解決策
現在の RAM ユーザーに、プロジェクトを跨ぐパッケージベースのリソース共有に基づいてプロジェクト 2 に対する権限が付与されている場合は、Hologres の既存の SQL ステートメントの前に次のパラメーターを追加することで、前述の問題を解決できます。
// V0.7 の Hologres インスタンスを使用している場合は、次のパラメーターを追加します。 set seahawks.seahawks_internal_current_odps_project='holoprojectname'; // V0.8 の Hologres インスタンスを使用している場合は、次のパラメーターを追加します。 set hg_experimental_odps_current_project_name = 'holoprojectname';
外部テーブルを作成するときに、「xxx に対する 'odps:List' 権限がありません」というエラーメッセージが返されるのはなぜですか?
問題の説明
HoloWeb または HoloStudio を使用して Hologres コンソールで外部テーブルを作成すると、エラーが発生します。「xxx に対する 'odps:List' 権限がありません」というエラーメッセージが返されます。
原因
現在の RAM ユーザーには、MaxCompute プロジェクトに対する LIST 権限が付与されていません。
解決策
MaxCompute 管理者に連絡して、現在の RAM ユーザーに MaxCompute プロジェクトに対する LIST 権限を付与してもらってください。詳細については、「MaxCompute の権限」をご参照ください。
データをクエリするために外部テーブルを作成する SQL ステートメントを実行します。詳細については、「Hologres で外部テーブルを作成して MaxCompute データのクエリを高速化する」をご参照ください。
外部テーブルを作成するときに、「プロジェクト IP ホワイトリストによってアクセスが拒否されました: sourceIP:'xxxx' はホワイトリストにありません。プロジェクト: xxxx」というエラーメッセージが返されるのはなぜですか?
問題の説明
HoloWeb を使用して Hologres コンソールで外部テーブルを作成すると、エラーが発生します。「プロジェクト IP ホワイトリストによってアクセスが拒否されました: sourceIP:'xxxx' はホワイトリストにありません。プロジェクト: xxxx」というエラーメッセージが返されます。
原因
現在の MaxCompute クラスタには IP アドレスホワイトリストが構成されています。ただし、HoloWeb の IP アドレスはホワイトリストに含まれていません。
解決策
IP アドレスホワイトリストが構成されると、ホワイトリストに含まれる IP アドレスのみが MaxCompute プロジェクトへのアクセスを許可されます。有効な AccessKey ペアを持っている場合でも、ホワイトリストにない IP アドレスから MaxCompute プロジェクトにアクセスすると、アクセスリクエストは拒否されます。この場合、エラーメッセージに示されている IP アドレスをホワイトリストに追加した後にのみ、外部テーブルを作成できます。詳細については、「IP アドレスホワイトリストを設定する」をご参照ください。
外部テーブルを作成するときに、「プロジェクト xxx に存在しません」というエラーメッセージが返されるのはなぜですか?
問題の説明
外部テーブルを作成すると、「プロジェクト xxx に存在しません」というエラーメッセージが返されます。
原因
外部テーブルの作成に使用されている RAM ユーザーには、ソース MaxCompute テーブルが存在する MaxCompute プロジェクトにアクセスする権限が付与されていません。
解決策
アクセスする MaxCompute プロジェクトの名前が有効かどうかを確認します。プロジェクト名が無効な場合は、有効な名前に置き換えます。プロジェクト名が有効で問題が解決しない場合は、MaxCompute にアクセスして、RAM ユーザーに MaxCompute プロジェクトにアクセスする権限を付与します。詳細については、「権限」をご参照ください。