现在我遇到了此查询的性能问题:
select userid from table_x inner join table_y on array_contains(split(table_y.userids,','),cast(table_x.userid as string))
y上的userid表示为一个由数字“123、134、156”组成的字符串,这实际上意味着三个userid,即123134和156。表\ux有一个userid列,其中详细说明了每个用户的个人信息。我想选择包含在表y的userids列中的userid。
假设性能问题的原因是因为我必须使用split(table\u y.userids,,')将表y中的userid转换为字符串数组,并使用array\u contains作为字符串。如果是这样,有没有人知道如何将用户ID字符串转换成整数数组?
谢谢您!
1条答案
按热度按时间s5a0g9ez1#
似乎你在做笛卡尔积联接。Hive无法加入
array_contains
-在Hive生成所有可能的组合后应用。要真正加入,你需要使用
explode(split(table_y.userids,','))
然后有一个正规的等式连接: