【发布时间】:2011-10-27 11:49:51
【问题描述】:
我们目前在 HDFS 集群上拥有一些数据,我们使用 Hive 在其上生成报告。基础设施正在退役,我们的任务是提出生成数据报告的替代方案(我们将其作为制表符分隔的文件导入到我们的新环境中)
假设我们有一个包含以下字段的表。
- 查询
- IP 地址
- 位置代码
我们过去在 Hive 上运行的原始 SQL 查询是(不完全是……但类似的东西)
select
COUNT(DISTINCT Query, IPAddress) as c1,
LocationCode as c2,
Query as c3
from table
group by Query, LocationCode
我想知道是否有人可以使用标准 unix/linux 工具(如 sort、uniq 和 awk)为我提供最有效的脚本,可以替代上述查询。
假设脚本的输入是一个文本文件目录。该目录将包含大约 2000 个文件。每个文件将包含任意数量的制表符分隔记录,格式为:
Query <TAB> LocationCode <TAB> IPAddress <NEWLINE>
【问题讨论】:
-
每个文件大概有多少行?
-
@a'r 几千.. 它可能会有所不同。最大的文件大小约为 2MB,最小的约为 450KB
-
您的原始查询看起来很奇怪,因为您正在按您也在聚合的字段之一进行分组,即您的不同计数可能只是
count(distinct IPAddress)。查询应该是这样的吗? -
@a'r 是的.. 我猜你是礼仪。你真的不需要在那里包含查询..
-
目录下的2000个文件,是否可以包含相同的Query/LocationCode/IPAddress元组?