我正在oozie中运行hive动作,其中hive.sql脚本具有以下提到的hive查询。
议程:
目标是将此查询的结果插入到hive集成的hbase表中,主要目标是通过transaction_dt列检索最新时间戳。
但是,当我通过OOZIE中的hive操作运行相同的查询时,它失败并显示
错误消息:
org.apache.hadoop.hive.ql.parse.SemanticException:行0:-1参数 类型不匹配“行”:期望EQUAL的第一个参数为 基本类型,但找到了列表
这里似乎不希望使用类似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一起使用。
答案 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所做的优化,我认为默认情况下此选项处于禁用状态。