尝试在显式传递中使用滞后函数时出错[Hive] [SAS over Hadoop]

时间:2016-02-04 23:52:27

标签: hadoop hive sas hiveql

以下查询给出了错误:

执行错误:处理语句时出错:FAILED:执行错误,返回代码2        org.apache.hadoop.hive.ql.exec.mr.MapRedTask

有谁知道为什么或如何解决这个问题?

proc sql;
connect to hadoop(server='xxx' port=10000 schema=xxx SUBPROTOCOL=hive2 sql_functions=all);
execute(
create table a as
select
    *,
    lag(claim_flg,1) over (order by ptnt_id,month) as lag1
from b
) by hadoop;
disconnect from hadoop;
quit;

1 个答案:

答案 0 :(得分:0)

这似乎是HIVE数据库中的限制问题:

每桌127个表达式的Hive限制 由于Hive数据库中的限制,表最多可包含127个表达式。读取第128个表达式时,指令失败,SAS日志收到类似以下内容的消息:

错误:java.sql.SQLException:处理语句时出错:失败: 执行错误,返回        代码2来自org.apache.hadoop.hive.ql.exec.mr.MapRedTask

错误:无法执行Hadoop查询。 错误:执行错误。 SQL_IP_TRACE:没有SQL直接传递给DBMS。 只要将表作为指令的一部分读取,Hive限制就适用。对于SAS数据加载器,在聚合,配置文件,查看结果以及查看样本数据时可能会发生错误。

来源:http://support.sas.com/documentation/cdl/en/dmddug/67908/HTML/default/viewer.htm#p1fl149uastoudn1v7r2u5ff8aft.htm