`
huadi223
  • 浏览: 21986 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Linux文件按某列排序取top 有关awk

阅读更多
目标:
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中排好序再说, 于是就这样搞了.
分享到:
评论

相关推荐

    《最全常用Linux命令集》.pdf

    5. sort:对文件中的行进行排序。 6. uniq:报告或过滤掉重复行。 7. tr:删除或替换字符集中的字符。 四、网络通讯类命令 1. ifconfig:配置网络接口的参数,现在已被ip命令取代。 2. ip:用于配置和显示路由、...

    Linux命令学习+Linux标准文本处理命令

    根据给定的文件信息,我们可以总结并扩展出以下几个重要的Linux知识点: ### 1. Linux的“壳”(Shell) #### 定义与作用 - **Shell** 是连接用户与Linux内核之间的桥梁,允许用户通过命令行接口与操作系统进行...

    linux基础命令笔记

    文本处理命令是Linux中的重要组成部分,它们能够对文件中的文本内容进行搜索、替换、排序、统计等操作。这些命令包括cat、tac、more、less、head、tail、grep、sed、awk等。cat命令可以用来查看文件内容、创建文件、...

    linux操作命令_demo-linux.zip

    此外,Linux系统提供了丰富的文本处理工具,如grep(文本搜索工具)、sed(流编辑器)、awk(强大的文本分析工具)、cut(剪切文本文件的列)、sort(排序文本行)、uniq(删除重复行)、tr(替换或删除字符)等。...

    一步一步学 Linux

    - **时间相关参数**:如按最近访问时间、修改时间等查找文件。 - **用户和用户组相关参数**:根据所有者或所属组查找文件。 - **文件权限及名称相关参数**:根据权限或文件名模式查找文件。 #### 四、文件|目录的...

    linux命令行作业_linux-.zip

    Linux提供了多种文本处理工具,如`grep`用于搜索文本,`awk`和`sed`用于文本模式扫描和处理,`cut`用于选取文本列,`sort`用于排序文本行,`uniq`用于报告或省略重复行。 此外,系统监控命令能够帮助用户了解系统...

    linxu命令大全 Linux命令非常丰富,下面列出了一些常用的Linux命令,并按照功能进行了分类

    无论是服务器运维、开发环境搭建还是日常的文件管理,掌握一系列基本且实用的Linux命令都是必不可少的。本文将详细介绍一些常见的Linux命令及其用法,帮助读者更好地理解和运用这些命令。 #### 一、文件操作命令 1...

    linux常用命令大全笔记.md

    sort命令用于对文件中的行进行排序,如`sort -t$'\t' -k1 文件名`表示按制表符分隔的第1列排序。 系统管理篇中,top命令用于实时显示系统运行状态,包括进程状态和资源使用情况。ps命令用于查看系统中的进程列表,...

    linux tools

    在系统管理和监控方面,`top`和`htop`提供实时的进程状态和资源使用情况,而`ps`则用于列出系统中的进程。`free`显示内存使用情况,`df`和`du`分别用于查看磁盘空间使用状况和具体文件或目录的大小。`netstat`用于...

    linux常用命令大全 - Linux - RHEL - Linux Commands

    - `ls -S`:按文件大小降序排列。 - `ls -r`:逆向排序,例如最新文件排在最后。 - `ls -u`:按最近访问时间排序。 - **cd**:更改当前工作目录。 - `cd &lt;directory&gt;`:进入指定目录。 - `cd ..`:返回上一级...

    Linux必学60个命令文件处理

    在Linux操作系统中,掌握一些基本的命令行工具是至关重要的,特别是对于文件和目录的管理。以下是一些关于Linux文件处理的重要命令,这些都是Linux初学者和专业人士必须掌握的基础知识。 1. **ls**:用于列出目录中...

    学习Linux---不得不知的Linux命令

    `paste` 命令用于将多个文件的内容按列合并到一起。例如: ``` paste file1 file2 &gt; combined_file ``` #### 26. cat - 显示文件内容 `cat` 命令用于显示文件内容。其他用于显示文件内容的命令还包括 `less` 和 `...

    linux常用命令大全.txt

    用于按列切分文本行。 5. sed:流编辑器。用于对文本流进行过滤和转换。 6. awk:强大的文本分析工具。用于模式扫描和处理语言。 三、权限和所有权命令 1. chown:更改文件或目录的所有者。用于更改文件的所有权。 ...

    Linux常用命令手册大全PDF

    Linux操作系统是基于类Unix系统的开源操作系统,以其高效、稳定和灵活性著称。Linux命令行界面提供了一种强大且灵活的操作方式。这里介绍一系列Linux常用命令,帮助用户高效使用Linux系统。 1. 文件与目录操作命令 ...

    linux-常用命令学习笔记.pdf

    Linux命令可以按功能分类,如文件管理、用户管理、进程管理、网络管理等。文件管理相关的命令包括文件创建、删除、查看、移动、拷贝、编辑等。例如,"cp"命令用于复制文件或目录,"rm"命令用于删除文件或目录,"mv...

    linux学习笔记:基础知识

    - **排序数据**:`sort`命令对文件内容进行排序,`grep`搜索特定模式,`awk`则用于处理和格式化文本数据。 随着对这些基础知识的理解加深,你可以进一步学习更高级的Linux概念,如权限管理、文件系统管理、系统...

    linux常用命令大全及说明

    Linux命令行提供了丰富的命令,这些命令通过shell(如bash、zsh等)被用户执行,用以操作文件系统、管理进程、配置网络等。 Linux常用命令可以从多个方面进行分类,比如文件和目录操作、文本处理、权限管理、系统...

Global site tag (gtag.js) - Google Analytics