Catalog

本文介绍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_timeoutwait_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初始化异常。

  • 解决方案

    1. 找到hive-conf-dir目录下的hive-site.xml文件,删除如下property信息。

       <property>
         <name>dlf.catalog.akMode</name>
         <value>EMR_AUTO</value>
       </property>
    2. 配置AccessKeyIdAccessKeySecret。

      <property>
          <name>dlf.catalog.accessKeyId</name>
          <value>${AccessKeyId}</value>
        </property>
      <property>
          <name>dlf.catalog.accessKeySecret</name>
          <value>${AccessKeySecret}</value>
        </property>