許可權問題
報錯顯示如下:
com.aliyun.datahub.exception.NoPermissionException: No permission, authentication failed in ram沒有許可權,一般是子帳號沒有授權導致,授權文檔:在RAM中添加許可權,可以參考許可權控制。
RDS VPC 報錯
報錯顯示如下:
InvalidInstanceId.NotFound:The instance not in current vpc解決辦法:
輸入服務地址和執行個體ID,如下圖所示

點擊調試,在返回的結果中尋找VpcCloudInstanceId

返回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;