权限问题
报错显示如下:
com.aliyun.datahub.exception.NoPermissionException: No permission, authentication failed in ram没有权限,一般是子账号没有授权导致,授权文档:在RAM中添加权限,可以参考权限控制。
RDS VPC 报错
报错显示如下:
InvalidInstanceId.NotFound:The instance not in current vpc解决办法:
在 OpenAPI Explorer 中找到 DescribeDBInstanceAttribute 接口页面,选择与实例所在地域对应的服务地址(如华北 3(张家口)),在 DBInstanceId 输入框中填入目标实例 ID。
点击调试,在返回的结果中查找 VpcCloudInstanceId。
"ConsoleVersion": "", "InstanceNetworkType": "VPC", "DBInstanceClassType": "x", "DBInstanceId": "rm-8vb46k05zz328je15", "AutoUpgradeMinorVersion": "Manual", "DBInstanceStorage": 50, "AvailabilityValue": "100.0%", "Engine": "MySQL", "IPType": "IPv4", "DBInstanceDiskUsed": 2994733056, "EngineVersion": "5.7", "DBInstanceStatus": "Running", "MaxConnections": 4000, "DBInstanceClass": "mysql.n2.medium.1", "AccountMaxQuantity": 99999, "VSwitchId": "vsw-8vb4860o3kz50f61sf99g", "PayType": "Prepaid", "LockMode": "Unlock", "SupportCreateSuperAccount": "Yes", "InsId": 1, "VpcId": "vpc-8vb4xj9ejcxynoz7alnyp", "CurrentKernelVersion": "rds_20191212", "TempUpgradeTimeStart": "2021-04-03 00:00:00", "TempUpgradeTimeEnd": "2021-04-11 00:00:00", "CreationTime": "2020-01-10T05:47:03Z", "ConnectionMode": "Standard", "VpcCloudInstanceId": "rm-8vb4Cxxx", "ProxyType": 0, "ConnectionString": "rm-8vb46k05zz328je15.mysql.zhangbei.rds.aliyuncs.com", "ExpireTime": "2021-04-10T16:00:00Z",返回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 => falseRequest body size exceeded
表示BodySize超过限制,建议用户对照限制描述
Record field size not match.
表示传入的schema参数与Topic中的schema不符合,建议采用getTopic来获取schema。
The limit of query rate is exceeded.
为了保证资源的有效利用,datahub服务器对请求的QPS进行了限制,出现这种情况一般是写入或者读取的频率过高,建议批量写入和批量读取,例如每1分钟写入一次,每次读取1000条record。
Num of topics exceed limit
新版本datahub中限制每个project中最多20个Topic。
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;