目标:
Hive中的数据, 按照每个类目用户的总流量大小排序.
现在需要取出每个类目的top10.
Hive中使用order by categoryId, traffic desc来对数据排序, 但没办法对每个categoryId取top. 因为limit是对整个最终结果产生影响, 所以不能用limit来做.
最后决定导出文本, 使用awk来取top10.
脚本:
hive -e "select category, traffic from log_table where pt=$yesterday order by category, traffic desc" | awk '{if(cate[$1] < 10){cate[$1]++;print $0}}' > result.txt
这样就能够按照category取top. 缺点是对数据量大小有要求, 太大可能不行, 不过是线性的.
最开始数据只是单纯用select导出, 所以需要先用sort做一个大排序, 然后awk, 最后再sort一下:
sort -k 2 -r -n result.txt | awk '{if(cate[$1] < 10){cate[$1]++;print $0}}' | sort -k1 -k2 -r
因为有排序, 所以对数据量很敏感, 最后决定先在Hive中排好序再说, 于是就这样搞了.
分享到:
相关推荐
5. sort:对文件中的行进行排序。 6. uniq:报告或过滤掉重复行。 7. tr:删除或替换字符集中的字符。 四、网络通讯类命令 1. ifconfig:配置网络接口的参数,现在已被ip命令取代。 2. ip:用于配置和显示路由、...
根据给定的文件信息,我们可以总结并扩展出以下几个重要的Linux知识点: ### 1. Linux的“壳”(Shell) #### 定义与作用 - **Shell** 是连接用户与Linux内核之间的桥梁,允许用户通过命令行接口与操作系统进行...
文本处理命令是Linux中的重要组成部分,它们能够对文件中的文本内容进行搜索、替换、排序、统计等操作。这些命令包括cat、tac、more、less、head、tail、grep、sed、awk等。cat命令可以用来查看文件内容、创建文件、...
此外,Linux系统提供了丰富的文本处理工具,如grep(文本搜索工具)、sed(流编辑器)、awk(强大的文本分析工具)、cut(剪切文本文件的列)、sort(排序文本行)、uniq(删除重复行)、tr(替换或删除字符)等。...
- **时间相关参数**:如按最近访问时间、修改时间等查找文件。 - **用户和用户组相关参数**:根据所有者或所属组查找文件。 - **文件权限及名称相关参数**:根据权限或文件名模式查找文件。 #### 四、文件|目录的...
Linux提供了多种文本处理工具,如`grep`用于搜索文本,`awk`和`sed`用于文本模式扫描和处理,`cut`用于选取文本列,`sort`用于排序文本行,`uniq`用于报告或省略重复行。 此外,系统监控命令能够帮助用户了解系统...
无论是服务器运维、开发环境搭建还是日常的文件管理,掌握一系列基本且实用的Linux命令都是必不可少的。本文将详细介绍一些常见的Linux命令及其用法,帮助读者更好地理解和运用这些命令。 #### 一、文件操作命令 1...
sort命令用于对文件中的行进行排序,如`sort -t$'\t' -k1 文件名`表示按制表符分隔的第1列排序。 系统管理篇中,top命令用于实时显示系统运行状态,包括进程状态和资源使用情况。ps命令用于查看系统中的进程列表,...
在系统管理和监控方面,`top`和`htop`提供实时的进程状态和资源使用情况,而`ps`则用于列出系统中的进程。`free`显示内存使用情况,`df`和`du`分别用于查看磁盘空间使用状况和具体文件或目录的大小。`netstat`用于...
- `ls -S`:按文件大小降序排列。 - `ls -r`:逆向排序,例如最新文件排在最后。 - `ls -u`:按最近访问时间排序。 - **cd**:更改当前工作目录。 - `cd <directory>`:进入指定目录。 - `cd ..`:返回上一级...
在Linux操作系统中,掌握一些基本的命令行工具是至关重要的,特别是对于文件和目录的管理。以下是一些关于Linux文件处理的重要命令,这些都是Linux初学者和专业人士必须掌握的基础知识。 1. **ls**:用于列出目录中...
`paste` 命令用于将多个文件的内容按列合并到一起。例如: ``` paste file1 file2 > combined_file ``` #### 26. cat - 显示文件内容 `cat` 命令用于显示文件内容。其他用于显示文件内容的命令还包括 `less` 和 `...
用于按列切分文本行。 5. sed:流编辑器。用于对文本流进行过滤和转换。 6. awk:强大的文本分析工具。用于模式扫描和处理语言。 三、权限和所有权命令 1. chown:更改文件或目录的所有者。用于更改文件的所有权。 ...
Linux操作系统是基于类Unix系统的开源操作系统,以其高效、稳定和灵活性著称。Linux命令行界面提供了一种强大且灵活的操作方式。这里介绍一系列Linux常用命令,帮助用户高效使用Linux系统。 1. 文件与目录操作命令 ...
Linux命令可以按功能分类,如文件管理、用户管理、进程管理、网络管理等。文件管理相关的命令包括文件创建、删除、查看、移动、拷贝、编辑等。例如,"cp"命令用于复制文件或目录,"rm"命令用于删除文件或目录,"mv...
- **排序数据**:`sort`命令对文件内容进行排序,`grep`搜索特定模式,`awk`则用于处理和格式化文本数据。 随着对这些基础知识的理解加深,你可以进一步学习更高级的Linux概念,如权限管理、文件系统管理、系统...
Linux命令行提供了丰富的命令,这些命令通过shell(如bash、zsh等)被用户执行,用以操作文件系统、管理进程、配置网络等。 Linux常用命令可以从多个方面进行分类,比如文件和目录操作、文本处理、权限管理、系统...