通过OOZIE在蜂巢动作中参数类型不匹配

时间:2019-06-07 00:15:03

标签: hive oozie

我正在oozie中运行hive动作,其中hive.sql脚本具有以下提到的hive查询。

议程:

  1. 目标是将此查询的结果插入到hive集成的hbase表中,主要目标是通过transaction_dt列检索最新时间戳。

  2. 但是,当我通过OOZIE中的hive操作运行相同的查询时,它失败并显示

错误消息:

  

org.apache.hadoop.hive.ql.parse.SemanticException:行0:-1参数   类型不匹配“行”:期望EQUAL的第一个参数为   基本类型,但找到了列表

  1. 这里似乎不希望使用类似UDF定义的变量,但是应该使用原始类型。

    当我在蜂巢壳上手动运行此查询时,它运行良好。

    insert overwrite table hive_lookup_hbase

    Select lookup.card_id, lookup.UCL, lookup.postcode, lookup.transaction_dt,lookup.score
    from
    (
    SELECT ct.card_id, row_number() over ( partition by ct.card_id order by ct.transaction_dt desc ) rows,
    ct.postcode , ct.member_id, ct.transaction_dt, ms.score, c_u_look.UCL
    FROM hive_cardtrans_hbase ct 
         join cid_ucl_lookup c_u_look 
         join member_score ms on c_u_look.card_id=ct.card_id and ms.member_id=ct.member_id
    )lookup

    where rows=1;

与蜂巢壳一起使用时,需要知道我可以进行哪些更改才能使其与oozie一起使用。

2 个答案:

答案 0 :(得分:0)

我不确定这是引起异常的原因,但是很明显,没有ON条件的联接是不好的事情,因为它是CROSS JOIN。似乎第一次连接的ON条件不在应有的位置。应该是这样,不是吗?

FROM hive_cardtrans_hbase ct 
         join cid_ucl_lookup c_u_look on c_u_look.card_id=ct.card_id
         join member_score   ms       on ms.member_id=ct.member_id

不是这个:

FROM hive_cardtrans_hbase ct 
         join cid_ucl_lookup c_u_look 
         join member_score   ms on c_u_look.card_id=ct.card_id and ms.member_id=ct.member_id

答案 1 :(得分:0)

此问题已通过在hive脚本中设置set hive.auto.convert.join = false来解决。 这基本上禁用了OOZIE所做的优化,我认为默认情况下此选项处于禁用状态。