Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 配置单元agg请求分组中的列_Hadoop_Group By_Hive_Case - Fatal编程技术网

Hadoop 配置单元agg请求分组中的列

Hadoop 配置单元agg请求分组中的列,hadoop,group-by,hive,case,Hadoop,Group By,Hive,Case,我有一个基本查询(用模糊的名称重写),我不明白为什么hive要求将case语句中的t2.description列添加到group by中。我安抚了他们,把它放进去,但我当然会得到每一行该列的空值。。。如果我取出case语句并查询原始数据,我会得到所有可爱的描述。只有当我想在case语句中添加一些逻辑时,它才会失败。我对Hive还不熟悉,知道它不是ANSI sql,但我没想到它会这么挑剔 select t1.columnid as column_id, (case wh

我有一个基本查询(用模糊的名称重写),我不明白为什么hive要求将case语句中的
t2.description
列添加到group by中。我安抚了他们,把它放进去,但我当然会得到每一行该列的空值。。。如果我取出case语句并查询原始数据,我会得到所有可爱的描述。只有当我想在case语句中添加一些逻辑时,它才会失败。我对Hive还不熟悉,知道它不是ANSI sql,但我没想到它会这么挑剔

select
t1.columnid               as column_id,
(case when t2.description in ('description1','description2','description3') then t2.description else null end) as label_description

from table1 t1
left outer join table2 t2 on (t1.inresult = t2.inresult)

group by
t1.columnid

根据Hive的sql解析器显示的错误日志,通常很难理解实际问题。这里的问题是您选择了两列,但仅将GROUPBY应用于一列。要使此查询可执行,必须执行以下操作之一:

  • 按第1列和第2列进行分组
  • 选择t1.columnid作为列id, (当t2.description出现在('description1'、'description2'、'description3')中时,则为t2.description else null end)作为表1 t1左外连接中的标签描述 表2按t1.columnid分组的t2(t1.inresult=t2.inresult)(病例 当t2.description在('description1'、'description2'、'description3'中时) 然后t2.说明(否则为空端)

  • 不要使用GROUPBY语句
  • 选择t1.columnid作为列id, (当t2.description出现在('description1'、'description2'、'description3')中时,则为t2.description else null end)作为表1 t1左外连接中的标签描述 表2 t2 on(t1.inresult=t2.inresult)

  • 将聚合函数应用于第2列
  • 选择t1.columnid作为列id, 最小值(t2.description在('description1'、'description2'、'description3')中时的情况),然后是t2.description else null end)作为表1 t1左外连接中的标签描述 表2按t1.columnid分组的t2(t1.inresult=t2.inresult)


    对于配置单元,如果您使用的是GROUP BY,那么您选择的所有列都必须在GROUP BY语句中,或者包装在应用的聚合语句中,如MAX、MIN或SUM。

    1。为每一行的
    label\u description
    提供空值;2.不跑请组员;3.当min(t2.description)仍然在group by中请求
    t2.description
    ,我们不能将
    min()
    放在
    t1.columnid
    周围,因为我希望每个条目不仅仅是
    min()
    。。。您基本上只是说明了RDBMS的每一项工作,除了解析器日志很难理解之外,您没有对Hive进行任何说明,我在这里发布这个问题时清楚地知道这一点。。。