このトピックでは、カタログエラーに関するよくある質問への回答を提供します。
Hologres カタログ経由で Hologres からデータを読み取るときに、Flink がリアルタイムでデータを使用せずにジョブを自動的に終了するのはなぜですか。
原因
デフォルトでは、Realtime Compute for Apache Flink は Hologres からバッチモードでデータを読み取ります。リアルタイムではありません。
解決策
実行モードをストリームモードに変更するには、次に示すように、SQL スクリプトに
/*+ OPTIONS('binlog'='true') */ヒントを追加します。INSERT INTO testfinish SELECT col1, col2, col3 FROM testsource /*+ OPTIONS ('binlog' = 'true') */ LEFT JION testdim /*+ OPTIONS ('binlog' = 'true') */ ON testsource.co11 = testdim.'col1';
エラーメッセージ「CREATE TABLE ... AS TABLE ... 文には、ターゲットカタログ ... が org.apache.flink.table.catalog.CatalogTableProvider インターフェースを実装している必要があります。」が表示された場合はどうすればよいですか。
問題の説明
org.apache.flink.table.api.ValidationException: SQL validation failed. CREATE TABLE ... AS TABLE ... statement requires target catalog 'XXXXXX' (MongoDBCatalog) implements org.apache.flink.table.catalog.CatalogTableProvider interface. Hint: Please refer the document and use another catalog that supports schema evolution as the target catalog.原因
使用しているアップストリームおよびダウンストリームストレージシステムは、CREATE TABLE AS 文ではサポートされていません。たとえば、CREATE TABLE AS 文を使用してデプロイメントを作成する場合、MongoDB カタログのテーブルをシンクテーブルとして使用してデータを書き込むことはできません。
解決策
CREATE TABLE AS 文でサポートされているアップストリームおよびダウンストリームストレージシステムを使用します。詳細については、「制限」をご参照ください。CREATE TABLE AS 文でサポートされているソーステーブルとシンクテーブルを使用できます。
MySQL カタログに関する情報のクエリ速度が遅い場合、またはクエリ中にサーバー例外が返される場合はどうすればよいですか。
問題の説明
MySQL カタログを作成した後、MySQL カタログに関する情報のクエリ速度が遅い場合、またはクエリ中にサーバー例外が返されます。次の図は、エラーの詳細を示しています。
原因
この問題は、Flink と MySQL 間のネットワーク遅延が大きいこと、または接続が頻繁に中断されることが原因である可能性があります。
解決策
次のいずれかの方法を使用して、問題を解決できます。
Realtime Compute for Apache Flink から MySQL へのパブリック帯域幅が不足しているかどうかを確認します。たとえば、パブリック帯域幅のデフォルト値は 2 Mbit/s のみである場合があります。また、リージョン間のアクセスが実行されているかどうかを確認します。詳細については、「パブリック帯域幅を表示するにはどうすればよいですか。」をご参照ください。
ネットワーク接続が不安定な場合は、MySQL インスタンスに関連する
interactive_timeoutパラメーターとwait_timeoutパラメーターの値を増やします。MySQL カタログのテーブルを作成するときに、
'connect.timeout'='120s'構成を WITH 句に追加します。
エラーメッセージ「EMR メタサービスから STS トークンを取得できません。」が表示された場合はどうすればよいですか。
問題の説明
Caused by: MetaException(message:Initialize DlfMetaStoreClient failed: Initialize DlfMetaStoreClient failed: Cannot obtain STS token from EMR meta-service. Note that AK-Mode[dlf.catalog.akMode] can only used in EMR clusters, otherwise you should config the dlf.catalog.accessKeyId and dlf.catalog.accessKeySecret explicitly.) at com.aliyun.datalake.metastore.hive2.ProxyMetaStoreClient.createClient(ProxyMetaStoreClient.java:91) at com.aliyun.datalake.metastore.hive2.ProxyMetaStoreClient.<init>(ProxyMetaStoreClient.java:71) ... 41 more原因
構成ファイルが無効です。その結果、Hive カタログの初期化中にエラーが発生します。
解決策
hive-conf-dir ディレクトリにある hive-site.xml ファイルを見つけ、hive-site.xml ファイルから次のプロパティ情報を削除します。
<property> <name>dlf.catalog.akMode</name> <value>EMR_AUTO</value> </property>Hive カタログの AccessKey ID と AccessKey シークレットを構成します。
<property> <name>dlf.catalog.accessKeyId</name> <value>${AccessKeyId}</value> </property> <property> <name>dlf.catalog.accessKeySecret</name> <value>${AccessKeySecret}</value> </property>