SemanticException [错误 10085]:不支持使用 LATERAL VIEW 连接 'id'

Posted

技术标签:

【中文标题】SemanticException [错误 10085]:不支持使用 LATERAL VIEW 连接 \'id\'【英文标题】:SemanticException [Error 10085]: JOIN with a LATERAL VIEW is not supported 'id'SemanticException [错误 10085]:不支持使用 LATERAL VIEW 连接 'id' 【发布时间】:2019-02-12 13:06:12 【问题描述】:

我从我的上级那里收到了一个代码,该代码正在处理旧的 Hive 集群。我正在开发一个新集群并尝试使用 Putty 'bf mycode.sql' 上的直线功能运行它会引发错误:

错误:编译语句时出错:FAILED: SemanticException [错误 10085]:不支持使用 LATERAL VIEW 的第 6:24 行 JOIN 'id'(状态=42000,代码=10085)

create table myTable as select distinct AtypeId
,cast(from_unixtime(t.timestamp) as date) as date
,C
,t.id
,t.marketid
from File1 LATERAL VIEW explode(eventlist) exploded_table as t
join File2
on oldID=t.id
order by AtypeId,date;

知道我应该怎么做吗?

【问题讨论】:

新旧hive集群的版本是多少 【参考方案1】:

更改您的查询后尝试如下:

create table myTable as
select t.* from
(
  select distinct 
     AtypeId
     ,cast(from_unixtime(t.timestamp) as date) as date
     ,C
     ,t.id
     ,t.marketid
  from 
     File1 LATERAL VIEW explode(eventlist) exploded_table
) as t join File2 on oldID=t.id
order by AtypeId,date;

对于前任你不能同时使用连接和横向视图有一定的限制lateral viewmap join

我有一个疑问是,在旧版本中,它可能在连接中做一些不同的事情,所以没有抛出任何错误。您需要查看 explain plan 以更好地理解这两个版本。

【讨论】:

谢谢,但这对我不起作用。虽然我通过将函数拆分为 2 个函数来解决这个问题。【参考方案2】:

如果有人遇到这个问题,这对我有用。

create table myTable as select distinct AtypeId
,cast(from_unixtime(t.timestamp) as date) as date
,t.id
,t.marketid
from File1 LATERAL VIEW explode(eventlist) exploded_table as t
order by AtypeId,date;

create table myTable2 as select distinct AtypeId
,date
,C
,id
,marketid
from myTable
inner join File2
on oldID=id;

【讨论】:

以上是关于SemanticException [错误 10085]:不支持使用 LATERAL VIEW 连接 'id'的主要内容,如果未能解决你的问题,请参考以下文章

Hive 给出 SemanticException [错误 10014]:运行我的 UDF 时

编译语句时出错:FAILED:SemanticException [错误 10036]:列名重复:p_id

编译语句时出错:FAILED:SemanticException [错误 10128]:第 4:7 行尚不支持 UDAF 位置

失败:SemanticException 生成 Map Join 任务错误:无法通过异常生成新的 mapJoin 运算符:索引:0,大小:0

Hive:SemanticException [错误10002]:第3:21行无效的列引用'name'

SemanticException 无法获取表