Hive收集列表无法使用数百万条记录

时间:2017-03-28 05:58:06

标签: hive collect

我在外部查询中有一个配置单元查询我正在使用collect_list。内部查询我有180万条记录的有序列表。当我每次运行查询时,500-600条记录给出了错误的结果并错过了模式中的顺序。我用砖头罐也收集了udf。这也给出了相同的结果,500-600条记录不同。我没有任何线索如何调试。

select concat_ws('','',collect_list(host)),
  concat_ws('','',collect_list(cast(total_data_volume_host as string))),
  concat_ws('','',collect_list(cast(event_duration_host as string))),
  concat_ws('','',collect_list(application_name)),
  concat_ws('','',collect_list(cast(total_data_volume_app as string))),
  concat_ws('','',collect_list(cast(event_duration_app as string))),

1 个答案:

答案 0 :(得分:0)

使用ORDER BY是一个子查询,不保证有序数组 我们将使用 sort_array
concat_ws 仅适用于字符串数组,因此您使用 collect_list 将值转换为之前的字符串 <。strong>。
现在的问题是元素的自然顺序发生了变化 -
100&gt; 20但是&#39; 20&#39; &GT; &#39; 100&#39; (字母顺序)。
解决方法是使用空格,排序,连续 lpad ,然后删除空格。

Method: POST,
url:http://localhost:3005/postnew
body:{
    "firstName":"viki",
    "lastName":"Kumar",
    "userName":"vk12kq14",
    "password":"098765432"
}
content-type:application/json
  

3,20,100