开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

请问这个在脚本模式下运行失败了怎么办?

在odps脚本模式下执行: function myadd(@a BIGINT) as (select @a + 1); select myadd(key) from values (1) as t (key); 很可惜失败了,请问这个怎么解决?

展开
收起
滴滴滴~ 2023-03-21 16:55:03 277 0
3 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    根据您提供的信息,我猜测您是在阿里云MaxCompute上运行ODPS脚本时遇到了问题。如果您在ODPS脚本模式下执行以下命令:

    function myadd(@a BIGINT) as (select @a + 1); select myadd(key) from values (1) as t (key); 会出现"SyntaxError: Unknown keyword 'function'"错误提示。这是因为在ODPS脚本中,不支持使用function和as来定义UDF,需要使用CREATE FUNCTION语句来创建UDF函数。

    正确的语法应该是:

    -- 创建UDF函数 CREATE FUNCTION myadd AS 'com.aliyun.odps.examples.udf.MyAdd' USING JAR 'xxx.jar';

    -- 执行UDF函数 SELECT myadd(key) FROM (VALUES (1)) AS T(key); 其中,'com.aliyun.odps.examples.udf.MyAdd'为实现MyAdd函数的Java类名,'xxx.jar'为包含Java类的Jar文件路径。

    注意:如果您是在ODPS Studio或者其他交互式环境下执行SQL语句,可以使用function和as来定义UDF函数,因为这些环境会对SQL语句进行解释和转换。

    2023-05-18 20:16:05
    赞同 展开评论 打赏
  • 是在odps script节点执行的吗,可以查一下maxcompute相关内容。此答案整理自钉群“DataWorks交流群(答疑@机器人)”

    2023-03-22 10:05:04
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,根据你的描述,字面意思两个输入表的分区对不上。实际上可能是其中一个表没有数据、找不到分区,常见于多表join传递的情况。

    2023-03-22 08:29:35
    赞同 1 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载