このトピックでは、Realtime Compute for Apache Flink ワークスペースから Flink SQL と Paimon REST を使用して Data Lake Formation (DLF) カタログに接続する方法について説明します。
前提条件
-
Realtime Compute for Apache Flink のフルマネージドワークスペースが必要です。作成していない場合は、「Realtime Compute for Apache Flink の有効化」をご参照ください。
-
Realtime Compute for Apache Flink ワークスペースと DLF が同じリージョンにあることを確認してください。また、ワークスペースの VPC を DLF ホワイトリストに追加する必要があります。詳細については、「VPC ホワイトリストの設定」をご参照ください。
制限事項
Ververica Runtime (VVR) 11.1.0 以降のバージョンのみが、DLF カタログへの接続をサポートしています。
DLF カタログの作成
詳細については、「 DLF の概要 」をご参照ください。
Flink でのカタログの登録
この操作は、DLF カタログをメタデータとしてのみマッピングします。Realtime Compute for Apache Flink でこのカタログを作成または削除しても、DLF 内の基盤となるデータには影響しません。
-
Realtime Compute コンソールにログインします。
-
フルマネージドワークスペースのリストで、対象ワークスペースの名前をクリックしてコンソールを開きます。
-
UI を使用するか、SQL コマンドを実行してカタログを登録できます。
UI
-
左側のナビゲーションペインで、[Catalogs] をクリックします。
-
[Catalog List] ページで、[Create Catalog] をクリックします。
-
[Apache Paimon] を選択し、[Next] をクリックします。
-
[metastore] を [rest] に設定します。[catalog name] で、目的の DLF カタログを選択します。[OK] をクリックしてカタログを作成します。
SQL コマンド
スクリプトエディターで、次の SQL ステートメントを入力して実行し、カタログを作成します。
CREATE CATALOG `flink_catalog_name` WITH ( 'type' = 'paimon', 'metastore' = 'rest', 'token.provider' = 'dlf', 'uri' = 'http://cn-hangzhou-vpc.dlf.aliyuncs.com', 'warehouse' = 'dlf_test' );次の表で各パラメーターを説明します。
パラメーター
説明
必須
例
type
カタログのタイプ。このパラメーターは
paimonに固定されます。はい
paimon
metastore
メタストアのタイプ。このパラメーターは
restに固定されます。はい
rest
token.provider
トークンプロバイダー。このパラメーターは
dlfに固定されます。はい
dlf
uri
DLF REST Catalog Server にアクセスするための URI です。形式は
http://[region-id]-vpc.dlf.aliyuncs.comです。リージョン ID の詳細については、「エンドポイント」をご参照ください。はい
http://cn-hangzhou-vpc.dlf.aliyuncs.com
warehouse
ウェアハウスとして使用する基盤となる DLF カタログの名前。
はい
dlf_test
-
一般的なエラー
java.lang.NullPointerException
-
スタックトレースの例:
Caused by: java.lang.NullPointerException at org.apache.paimon.rest.HttpClient.getRequestUrl(HttpClient.java:180) at org.apache.paimon.rest.HttpClient.get(HttpClient.java:108) at org.apache.paimon.rest.RESTCatalog.<init>(RESTCatalog.java:159) at org.apache.paimon.rest.RESTCatalog.<init>(RESTCatalog.java:141) at org.apache.paimon.rest.RESTCatalogFactory.create(RESTCatalogFactory.java:36) at org.apache.paimon.catalog.CatalogFactory.createUnwrappedCatalog(CatalogFactory.java:84) at org.apache.paimon.catalog.CatalogFactory.createCatalog(CatalogFactory.java:71) at org.apache.paimon.flink.VvrCatalogFactory.createCatalog(VvrCatalogFactory.java:67) at org.apache.paimon.flink.VvrCatalogFactory.createCatalog(VvrCatalogFactory.java:37) at org.apache.flink.table.gateway.vvr.module.delegation.CatalogFactoryWrapper.createCatalog(CatalogFactoryWrapper.java:91) at org.apache.flink.table.factories.FactoryUtil.createCatalog(FactoryUtil.java:572) ... 23 more -
解決策:
カタログ設定の uri パラメーターの値を確認してください。値は
http://で始まる必要があります。
ForbiddenException: You are not authorized to do this operation
-
スタックトレースの例:
Caused by: org.apache.paimon.rest.exceptions.ForbiddenException: Forbidden: You are not authorized to do this operation. Action: dlf:GetConfig. AccessDeniedDetail : {"AuthAction":"dlf:GetConfig","AuthPrincipalType":"AssumedRoleUser","AuthPrincipalOwnerId":"xxxxx","AuthPrincipalDisplayName":"aliyunstreamasidefaultrole:xxxxx","PolicyType":"AccountLevelIdentityBasedPolicy","NoPermissionType":"ImplicitDeny"} requestId:xxxxx at org.apache.paimon.rest.DefaultErrorHandler.accept(DefaultErrorHandler.java:59) at org.apache.paimon.rest.DefaultErrorHandler.accept(DefaultErrorHandler.java:35) at org.apache.paimon.rest.HttpClient.exec(HttpClient.java:205) at org.apache.paimon.rest.HttpClient.get(HttpClient.java:112) at org.apache.paimon.rest.RESTCatalog.<init>(RESTCatalog.java:159) at org.apache.paimon.rest.RESTCatalog.<init>(RESTCatalog.java:141) at org.apache.paimon.rest.RESTCatalogFactory.create(RESTCatalogFactory.java:36 -
解決策:
AliyunStreamAsiDefaultRole ロールに AliyunDLFFullAccess ポリシーを付与してください。この手順は、将来の製品アップデートで不要になる場合があります。
-
Alibaba Cloud アカウントまたは RAM 管理者としてRAM コンソールにログインします。
-
左側のナビゲーションペインで、 に移動し、AliyunStreamAsiDefaultRole ロールを見つけます。
-
[Actions] 列で、[Grant Permission] をクリックします。
-
[ポリシー] セクションで、AliyunDLFFullAccess ポリシーを検索して選択し、[Grant Permissions] をクリックします。
-