本文介紹Catalog相關問題。
使用Hologres Catalog讀取Hologres源表時,作業自動完成,未即時消費,應該如何設定?
問題原因
Flink預設以批模式讀取Hologres源表資料,因此不會即時消費新寫入的資料。
解決方案
通過Table Hint方式將讀模數式更改為流模式,只需在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 ... statement requires target catalog ... implements org.apache.flink.table.catalog.CatalogTableProvider interface.
報錯詳情
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.報錯原因
可能是使用了CTAS不支援的上下遊儲存。例如,CTAS不支援MongoDB作為結果表寫入。
解決方案
CTAS支援的上下遊儲存列表請參見使用限制,您可以從源表和結果表中各選一個進行組合。
MySQL Catalog執行查詢很慢或查詢提示伺服器響應錯誤如何解決?
報錯詳情
MySQL Catalog建立成功但執行查詢很慢或查詢提示伺服器響應錯誤,如圖所示。

報錯原因
雲產品與MySQL之間的網路延遲較高或串連頻繁中斷,可能導致查詢效能下降或錯誤發生。
解決方案
以下三種最佳化方式供您選擇:
判斷雲產品到MySQL走的公網頻寬是否受限(例如有些配置是預設非常小的2 MB),以及是否存在跨Region訪問,詳情可參見如何查看公網頻寬情況?。
如果您的網路確實不佳,您可以將MySQL執行個體相關的
interactive_timeout和wait_timeout參數取值適當調大。建立表時,您可以添加WITH參數
'connect.timeout'='120s'。
報錯:Cannot obtain STS token from EMR meta-service.
報錯詳情
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 Catalog初始化異常。
解決方案
找到hive-conf-dir目錄下的hive-site.xml檔案,刪除如下property資訊。
<property> <name>dlf.catalog.akMode</name> <value>EMR_AUTO</value> </property>配置AccessKeyId和AccessKeySecret。
<property> <name>dlf.catalog.accessKeyId</name> <value>${AccessKeyId}</value> </property> <property> <name>dlf.catalog.accessKeySecret</name> <value>${AccessKeySecret}</value> </property>