`
huadi223
  • 浏览: 21646 次
  • 性别: 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命令学习+Linux标准文本处理命令

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

    一步一步学 Linux

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

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

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

    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-常用命令学习笔记.pdf

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

    Linux必学60个命令文件

    1. **ls**:列出目录内容,是最基本的命令之一,可以查看当前目录下的文件和子目录。 2. **cd**:切换目录,用于在文件系统中移动。 3. **pwd**:显示当前工作目录,确认你所在的路径。 4. **touch**:创建新文件或...

    linux命令大全chm格式的,方便查找

    "Linux命令大全.chm"就是这样一个包含大量Linux命令信息的CHM文件,用户可以像使用电子词典一样查阅其中的内容。 这个文档通常会按照命令的首字母排序,包括但不限于以下几大类命令: 1. 文件和目录管理: - `cd`...

    Introduction to Linux Commands

    通过不同的选项,如 `-a` 显示所有文件(包括隐藏文件),`-l` 以详细格式显示,`-t` 按修改时间排序,`-S` 按文件大小排序,`-h` 以人类可读的格式显示大小,`-r` 反向排序,`-R` 递归列出子目录。例如,`ls -alrR ...

    linux_man.zip_linux命令手册

    1. **ls**:用于列出目录内容,通过添加不同参数可以显示隐藏文件、按时间排序等。 2. **cd**:切换当前工作目录,是我们在Linux中移动的常用命令。 3. **pwd**:显示当前所在的工作目录,帮助确认当前位置。 4. **...

    linux中级命令备忘录中文版.pdf

    4. **`top`** 命令:显示Linux系统中进程的实时视图,可以按照CPU使用率或内存使用率进行排序。如: - `top -u` 按CPU使用率排序进程。 - `top -o mem` 按内存使用率排序进程。 - `top -n 5` 只显示前五个进程。 ...

    常用的Linux指令

    Linux是一个强大的操作系统,它提供了大量的命令行工具和指令来执行各种各样的任务。以下是Linux中一些最常用的命令及其知识点的详细介绍。 **文件操作** - **cat**: 用于查看文件内容,创建文件,文件合并,追加...

    Linux_commond.rar_linux_linux commond_tcl

    在IT领域,Linux操作系统是开发者和系统管理员的重要工具,尤其对于初学者来说,掌握基本的Linux命令行操作至关重要。"Linux_command.rar" 提供了一个针对Linux初学者的学习资源,主要聚焦于60个常用命令的教学,...

    Complete Linux Command Reference

    - `sort`:对文本文件中的行进行排序。 - `uniq`:去除重复的行。 - `sed`:流编辑器,用于文本替换、删除、插入等操作。 3. **系统管理命令** - `sudo`:以其他用户身份执行命令。 - `top`:实时显示系统资源...

    linux常用命令大全.txt

    - "ls" 命令列出目录下的文件和子目录。 - "mkdir" 命令创建新目录。 - "rmdir" 命令删除空目录。 - "cp" 命令用于复制文件或目录。 - "mv" 命令可以移动文件或目录,也可以用来重命名。 - "rm" 命令删除文件或目录...

    Linux必学的60个命令

    Linux操作系统以其强大的命令行工具而著称,在Linux系统中,命令行界面(CLI)是进行系统管理、文件操作、进程监控等日常任务的基石。本文将详细介绍Linux系统中常见的60个必备命令,这些命令覆盖了从基本的文件和...

Global site tag (gtag.js) - Google Analytics