开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

MaxCompute中如何处理使用udf导致的分区剪裁失效

已解决

MaxCompute中如何处理使用udf导致的分区剪裁失效

展开
收起
阿里云服务支持 2022-12-06 09:36:55 254 0
1 条回答
写回答
取消 提交回答
  • 官方回答

    目前如果使用了UDF可能会导致分区剪裁失效。从新版本开始,MaxCompute支持了UdfProperty注解。UDF的作者在定义UDF时,可以指定这个注解,让编译器知道这个函数是确定性的,如:

    @com.aliyun.odps.udf.annotation.UdfProperty(isDeterministic = true)

    public class AnnotatedUdf extends com.aliyun.odps.udf.UDF {

        public String evaluate(String x) {
    
                return x;
    
        }
    

    }

    然后改写 SQL 语句为:

    -- 原来的写法

    SELECT * FROM t WHERE pt = udf('foo'); -- pt 是 t 的一个分区列。

    -- 改成下面的样子

    SELECT * FROM t WHERE pt = (SELECT udf('foo')); -- pt 是 t 的一个分区列。

    2022-12-06 09:49:03
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载
    大数据&AI实战派 第2期 立即下载