--现在需求想把战区给tmp2表拼上 select tmp2.b ,tmp1.c from tmp1 join tmp2 on tmp1.a like concat('%',tmp2.b,'%')

odps不支持无 on 的 join 会报

*ODPS-0130252 Cartesian product is not allowed without map join *的错误

可以往select里增加字段来绕过这个限制

with tmp1 as (
select '保定五洲长城大街店' as a,'华北战区' as c
union all
select '新疆五洲乌鲁木齐店' as a,'西北战区' as c
tmp2 as (
select '保定五洲' as b
union
select '廊坊五洲' as b
select tmp22.b ,tmp11.c from
 (select *,1 as raoguo from tmp1) tmp11 
join (select * ,1 as raoguo from tmp2) tmp22
 on tmp11.raoguo =tmp22.raoguo
 and  tmp11.a like concat('%',tmp22.b,'%')
如何绕过ODPS不支持的笛卡尔积的限制需求情景再现with tmp1 as (select '保定五洲长城大街店' as a,'华北战区' as cunion allselect '新疆五洲乌鲁木齐店' as a,'西北战区' as c),tmp2 as (select '保定五洲' as bunionselect '廊坊五洲' as b)--现在需求想把战区给tmp2表拼上select tmp2.b ,tmp1.c from tmp1 join tmp2 on tmp1
select * from pn_tablename a join pn_tablename b; odps 支持 无 on 的 join 会报 ODPS -0130252 Cart esian product is not allowed without map join 的错误 可以往select里增加字段来 绕过 这个 限制 select * from (se...
貌似大部分人在遇到报错的时候,都懒得用翻译软件翻译报错信息,一般直接抛出来问,甚至连报错信息都懒得复制,直接截图出来。所以这里特地总结了一下,最近一段时间有人经常在群里问到的报错信息。 ODPS -0130252: Cart esian product is not allowed “不允许 笛卡尔积 ”主要是为了防止用户误操作,不小心漏了关联条件,造成大量的资源...
踩过数据仓库 hive 的坑: hive 设置严格模式 hive 提供了一个严格模式,可以防止用户执行那些可能产生意想不到的不好的效果的查询,也可以很好的防止数据倾斜。即某些查询在严格 模式下无法执行。通过设置 hive . map red.mode的值为strict,可禁止以下3种类型的查询。 1)带有分区的表的查询 如果在一个分区表执行 hive ,除非where语句中包含分区字段过滤条件来显示数据范围,否则不允许执行。换句话说, 就是用户不允许扫描所有的分区。进行这个 限制 的原因是,通常分区表都拥有非常大的数据集,而且数据增
Hive 严格模式 Hive 提供了一个严格模式,可以防止用户执行那些可能产生意向不到的不好的效果的查询。说通俗一点就是这种模式可以阻止某些查询的执行。通过如下语句设置严格模式: hive > set hive . map red.mode=strict;设置为严格模式后,可以禁止3种类型的查询: (1):带有分区的表的查询 如果在一个分区表执行 hive ,除非where语句中包含分区字段过滤条件来显示
2: 需要做不等值 join 操作(a.x 这种操作如果直接使用 join 的话语法不 支持 不等于操作, hive 语法解析会直接抛出错误 如果把不等于写到where里会造成 笛卡尔积 ,数据异常增大,速度会很慢。甚至会任务无法跑成功~ 根据 map join 的计算原理, MAP JION会把小表全部读 Map Join 通常用于一个很小的表和一个大表进行 join 的场景,具体小表有多小,由参数 hive . map join .smalltable.filesize来决定,该参数表示小表的总大小,默认值为25000000字节,即25M。 Hive 0.7... 目前 hive 支持 in或not in 中包含查询子句的语法,所以只能通过left join 实现。 假设有一个登陆表login(当天登陆记录,只有一个uid),和一个用户注册表regusers(当天注册用户,字段只有一个uid),这两个表都包含一个字段,uid。  如果要查询当天登陆的注册用户,需要用in查询, hive sql如下: select login.uid fr...
当使用阿里云 ODPS 服务时,如果出现"The instance type is not supported"的错误提示,通常是由于所选择的实例类型不被 支持 所导致的。 当前阿里云 ODPS 支持 的实例类型有:16c8g, 32c16g, 64c32g, 96c48g, 128c64g等,如果你所选择的实例类型不在这些选项中,就会出现上述错误。 解决方法是选择 支持 的实例类型来创建 ODPS 实例。如果你不确定如何选择实例类型,可以参考阿里云官方文档,或者联系阿里云客服寻求帮助。