本文介紹JindoSDK訪問(wèn)OSS出現(xiàn)InvalidArgument Part number問(wèn)題的原因和解決方法。

問(wèn)題詳情

ErrorMessage : [RequestId]: 62DC30C7F31FA339346B57B2 [HostId]: oss-cn-beijing-internal.aliyuncs.com [ErrorMessage]: [E1010]HTTP/1.1 400 Bad Request: InvalidArgument Part number must be an integer between 1 and 10000, inclusive. 62DC30C7F31FA339346B57B2 xxx.oss-cn-beijing-internal.aliyuncs.com PartNumber 10001 ERROR_CODE : 1010

問(wèn)題原因

分塊(Part)數(shù)量超出支持范圍。JindoSDK默認(rèn)使用MultiPartUpload方式上傳文件到OSS,OSS最多支持10000個(gè)Part。

解決方法

  • JindoSDK/JindoData 4.3.0版本(EMR-3.40.0或EMR-5.6.0版本集群)JindoMagicCommitter存在缺陷,導(dǎo)致Part使用過(guò)快。您可以選擇以下任意一種方式進(jìn)行以下修復(fù):
  • 目前JindoSDK默認(rèn)最大支持80 GB文件寫(xiě)入。一般情況Spark或Hive作業(yè)不會(huì)寫(xiě)入超過(guò)80 G的文件,可能是作業(yè)出現(xiàn)數(shù)據(jù)傾斜導(dǎo)致文件超大,建議您進(jìn)行作業(yè)調(diào)參或優(yōu)化規(guī)避數(shù)據(jù)傾斜問(wèn)題。
  • JindoSDK 4.5.2 (EMR-3.43.1或EMR-5.9.1) 及以上版本支持配置fs.oss.blocklet.size.mb進(jìn)行調(diào)整,默認(rèn)為8。由于Part最多為10000個(gè),因此寫(xiě)入文件不能超過(guò)80 GB。如果有個(gè)別文件超過(guò)80 GB,建議根據(jù)文件大小單獨(dú)調(diào)大本配置,并同時(shí)調(diào)大請(qǐng)求OSS的超時(shí)時(shí)間。如文件大小未知或遠(yuǎn)大于80 GB(例如,超過(guò)160 GB),建議考慮使用OSS-HDFS(無(wú)文件大小限制)。