常见问题

权限问题

报错显示如下:

com.aliyun.datahub.exception.NoPermissionException: No permission, authentication failed in ram

没有权限,一般是子账号没有授权导致,授权文档:在RAM中添加权限,可以参考权限控制

RDS VPC 报错

报错显示如下:

InvalidInstanceId.NotFound:The instance not in current vpc

解决办法:

  1. 查询实例详情

  2. 输入服务地址和实例ID,如下图所示vpc-2

  3. 点击调试,在返回的结果中查找VpcCloudInstanceIdvpc-3

  4. 返回DataHub同步RDS页面,将获取到的VpcCloudInstanceId填入实例ID框内

jar包冲突

使用Java SDK,常见jar包冲突有以下几种

  • InjectionManagerFactory not found

    • SDK默认依赖jersey-client 2.22.1版本,如果用户依赖高版本,需要增加依赖。

  <dependency>
      <groupId>org.glassfish.jersey.inject</groupId>
      <artifactId>jersey-hk2</artifactId>
      <version>xxx</version>
    </dependency>
  • java.lang.NoSuchFieldError: EXCLUDE_EMPTY

    • jersey-common库版本太低,建议使用或高于SDK依赖版本,即 >= 2.22.1

  • Error reading entity from input stream

    • 原因1:httpclient版本太低,版本 >= 4.5.2

    • 原因2: 使用了新的数据类型,和SDK版本不匹配,需要升级SDK版本

  • jersey-apache-connector高版本有tcp链接bug

    • 使用2.22.1版本

  • java.lang.NosuchMethodError:okhttp3.HttpUrl.get(java/lang/String:)okhttp3/HttpUrl

    • 看下 mvn dependency:tree 是否有其他组件依赖来冲突的 okhttp版本

  • javax/ws/rs/core/ResponseStatusFamily

    • 检查javax.ws.rs包依赖情况,比如是否错误依赖了jsr311-api

其他问题

  • Parse body failed,Offset: 0

    • 一般出现写入数据时,在专有云的datahub中,因版本较低,所以不支持protobuf的二进制传输模式,而一些SDK默认都是开启二进制传输的,需要手动关闭即可。

    • Java SDk

datahubClient = DatahubClientBuilder.newBuilder()
    .setDatahubConfig(
        new DatahubConfig(endpoint,
            // 是否开启二进制传输,服务端2.12版本开始支持
            new AliyunAccount(accessId, accessKey), true))
    .build();
  • Python SDK

# Json mode: for datahub server version <= 2.11
dh = DataHub(access_id, access_key, endpoint, enable_pb=False)
  • GO SDK

config := &datahub.Config{
    EnableBinary:   false,
}
dh := datahub.NewClientWithConfig(accessId, accessKey, endpoint, config)
  • logstash

添加配置 enable_pb => false

  • Request body size exceeded

  • Record field size not match.

    • 表示传入的schema参数与Topic中的schema不符合,建议采用getTopic来获取schema。

  • The limit of query rate is exceeded.

    • 为了保证资源的有效利用,datahub服务器对请求的QPS进行了限制,出现这种情况一般是写入或者读取的频率过高,建议批量写入和批量读取,例如每1分钟写入一次,每次读取1000record。

  • Num of topics exceed limit

    • 新版本datahub中限制每个project中最多20Topic。

  • SeekOutOfRange

    • 点位参数非法或者点位已经失效。

  • Offset session has changed

    • 订阅是无法进行并行消费,请检查程序中是否存在多处消费同一个订阅的情况。

  • sink to odps,Decimal是否支持

    • 支持没有指定精度的decimal,默认(36,18)

  • addAttribute是什么意思

    • recordEntry.addAttribute(“key1”, “value1”)可以对一条record添加额外属性,可选项,可以根据实际的场景进行添加。

  • 如何删除Topic中的数据

    • datahub目前不支持删除Topic中的数据,建议采用重置点位来让数据失效。

  • 在配置所定义的OSS路径下以随机文件名创建文件,每个Shard对应一个文件,当文件大小达到5GB时,将创建新文件 ,可以修改吗?

    • 不能修改

  • ADS无法访问公网域名的解决方案

    • 需要在ads申请内网域名,连上数据库,指向alter database set intranet_vip = true,然后查询 select internal_domain, internal_port from information_schemata;