错误码:ODPS-0123031:ODPS partition exception
错误1:maximum 60000 partitions allowed
错误信息示例
ODPS-0123031:ODPS partition exception - maximum 60000 partitions allowed
错误描述
每张MaxCompute的分区表最多允许存在 60000 个分区,此限制无法调整。
解决方案
当某张表超出 60000 个分区时,你可以通过以下方式解决:
1)通过设置表生命周期,系统自动删除过期的分区数据与分区,详情请参考 生命周期操作 。
2)您可以合并历史分区数据,例如把历史一个的数据合并成一个分区,详情可以参考 合并分区 。
3)您可以通过拆表,把历史分区数据备份到备份表,把历史分区从当前表删除,请参考 删除分区 。
错误2: a single instance cannot output data to more than 10000 partitions
错误信息示例
ODPS-0123031:Partition exception - a single instance cannot output data to more than 10000 partitions
错误描述
在INSERT INTO或INSERT OVERWRITE操作时,虽然单个MaxCompute表允许有6万个分区,但是单个作业涉及的输出表分区数量只允许有10000个。出现这个错误,通常是因为分区字段设置有误,例如根据ID字段分区造成分区过多。
解决方案
一般作业输出动态分区数达到几千已经很大,超过10000可能存在业务逻辑或SQL语法问题。如无逻辑或语法问题,建议修改分区表的分区字段,或将业务逻辑拆分为多个作业,避免出现该错误。
错误3: invalid dynamic partition value
错误信息示例
ODPS-0123031:Partition exception - invalid dynamic partition value: province=上海
错误描述
执行插入动态分区操作时,使用了非法的动态分区。动态分区是根据指定字段进行分区,不支持特殊字符和中文动态分区字段。
解决方案
插入动态分区时,需要注意如下情况:
-
在分布式环境下执行插入动态分区操作时,单个进程最多只能输出512个动态分区。
-
任意动态分区SQL不允许生成超过2000个动态分区。
-
动态生成的分区值不允许为NULL。
-
如果目标表有多级分区,在执行INSERT操作时,允许指定部分分区为静态,但是静态分区必须是高级分区。
错误4: java.lang.ClassNotFoundException:com.aliyun.odps.hive.wrapper.HiveInputFormatWrapper
错误信息示例
ODPS-0123131:User defined function exception - internal error - Fatal Error Happended
java.lang.RuntimeException: java.lang.ClassNotFoundException: com.aliyun.odps.hive.wrapper.HiveInputFormatWrapper
错误描述
使用到了Hive相关的解析器,但没有打开Hive兼容开关,导致报错。
解决方案
执行以下命令打开Hive兼容模式:
SET odps.sql.hive.compatible=true;