转自:http://longriver.me/?p=57

方法1:

单进程处理大规模的文件速度如(上million量级)比较慢,可以采用awk取模的方法,将文件分而治之,这样可以利用充分的利用多核CPU的优势

1
2
3
4
for((i=0;i<5;i++));do          
    cat query_ctx.20k | awk 'NR%5=='$i'' |\
     wc -l  1> output_$i 2>err_$i &
 done

方法2:

另外也可以使用split的方法,或者hashkey 的办法把大文件分而治之,
该办法的缺陷是需要对大文件预处理,这个划分大文件的过程是单进程,也比较的耗时

1
2
3
4
5
6
7
8
9
10
infile=$1
opdir=querys
opfile=res
s=`date "+%s"`
while read line
do
    imei=`./awk_c "$line"`
    no=`./tools/default $imei 1000`
    echo $line >> $opdir/$opfile-$no
done<$infile

方法3:

该方法是方法2的延伸,在预处理之后,可以使用shell脚本起多个进程来并行执行,当然为了防止进程之间因为并行造成的混乱输出,可以使用锁的办法,也可以通过划分命名的办法。下面的例子比较巧妙使用mv 操作。这一同步操作起到互斥锁的作用,使得增加进程更加灵活,只要机器资源够用,随时增加进程,都不会造成输出上的错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
output=hier_res
input=dbscan_res
prefix1=tmp-
prefix2=res-
for file in `ls  $input/res*`
do
    tmp=`echo ${file#*-}`
    ofile1=${prefix1}${tmp}
    ofile2=${prefix2}${tmp}
    if [ ! -f $output/$ofile1 -a ! -f $output/$ofile2 ];then
        touch $output/aaa_$tmp
        mv $output/aaa_$tmp $output/$ofile1
        if [ $? -eq 0 ]
        then   
            echo "dealing "$file
            cat $file | python hcluster.py 1> $output/$ofile1 2> hier.err
            mv $output/$ofile1 $output/$ofile2
        fi     
    fi
done

shell脚本处理大数据系列之(一)方法小结的更多相关文章

  1. shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  2. 大数据系列(3)——Hadoop集群完全分布式坏境搭建

    前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...

  3. 玩转大数据系列之Apache Pig高级技能之函数编程(六)

    原创不易,转载请务必注明,原创地址,谢谢配合! http://qindongliang.iteye.com/ Pig系列的学习文档,希望对大家有用,感谢关注散仙! Apache Pig的前世今生 Ap ...

  4. 大数据系列(5)——Hadoop集群MYSQL的安装

    前言 有一段时间没写文章了,最近事情挺多的,现在咱们回归正题,经过前面四篇文章的介绍,已经通过VMware安装了Hadoop的集群环境,相关的两款软件VSFTP和SecureCRT也已经正常安装了. ...

  5. 大数据系列(4)——Hadoop集群VSFTP和SecureCRT安装配置

    前言 经过前三篇文章的介绍,已经通过VMware安装了Hadoop的集群环境,当然,我相信安装的过程肯定遇到或多或少的问题,这些都需要自己解决,解决的过程就是学习的过程,本篇的来介绍几个Hadoop环 ...

  6. 大数据系列(2)——Hadoop集群坏境CentOS安装

    前言 前面我们主要分析了搭建Hadoop集群所需要准备的内容和一些提前规划好的项,本篇我们主要来分析如何安装CentOS操作系统,以及一些基础的设置,闲言少叙,我们进入本篇的正题. 技术准备 VMwa ...

  7. 大数据系列之分布式数据库HBase-1.2.4+Zookeeper 安装及增删改查实践

    之前介绍过关于HBase 0.9.8版本的部署及使用,本篇介绍下最新版本HBase1.2.4的部署及使用,有部分区别,详见如下: 1. 环境准备: 1.需要在Hadoop[hadoop-2.7.3]  ...

  8. 大数据系列之分布式数据库HBase-0.9.8安装及增删改查实践

    若查看HBase-1.2.4版本内容及demo代码详见 大数据系列之分布式数据库HBase-1.2.4+Zookeeper 安装及增删改查实践 1. 环境准备: 1.需要在Hadoop启动正常情况下安 ...

  9. 大数据系列之Flume+kafka 整合

    相关文章: 大数据系列之Kafka安装 大数据系列之Flume--几种不同的Sources 大数据系列之Flume+HDFS 关于Flume 的 一些核心概念: 组件名称     功能介绍 Agent ...

随机推荐

  1. PC客户端测试总结

    1.1界面显示内容的检查l 完整性(1显示时应考虑数据显示宽度的自适应或自动换行(数据长度较长).(2所数据展现的界面(如查询等),必须使测试数据的记录数超过一页,以验证满页时其窗体是否有横向.纵向滚 ...

  2. 防止忘记初始化NSMutableArray的方法

    在写项目的过程中,经常会遇到一些郁闷的事,往一个可变数组中添加一个模型数据时,经常会发现程序运行很正常,可是可变数组中就是没有任何数据,久病成医,我发现自己总是放一个错,就是NSMutableArra ...

  3. getSingleResult 和 selectone

    都是返回一个对象,如果找到一个以上的对象会报错,这个在登录验证和添加的时候可能会有点小用,因为登录和添加的时候都要判断是不是数据库有这个username,登录的时候希望有,添加的时候希望没有,但是两者 ...

  4. 第四课 Gallery的使用

    直接上代码 1.Layout--Main.axml <?xml version="1.0" encoding="utf-8"?> <Linea ...

  5. 使用HttpOnly提升Cookie安全性

        在介绍HttpOnly之前,我想跟大家聊聊Cookie及XSS. 随着B/S的普及,我们平时上网都是依赖于http协议完成,而Http是无状态的,即同一个会话的连续两个请求互相不了解,他们由最 ...

  6. Python学习路程day5

    冒泡排序 将一个不规则的数组按从小到大的顺序进行排序 data = [10,4,33,21,54,3,8,11,5,22,2,1,17,13,6] #第一次循环,最后一个数字不需要循环,因为最大值已经 ...

  7. golang vim环境搭建

    主要使用到的是golang的vim插件vim-go, 安装方法: (1)配置好自己的GOPATH和GOROOT: (2)在GOPATH目录下建立 src.pkg.main.bin四个目录: (3)安装 ...

  8. AFNetworking实现程序重新启动时的断点续传

    今天需要用AFNetworking实现断点续传的功能,但是在进行了一番研究之后,发现AFNetworking虽然支持下载文件的暂停和继续,但是程序重新启动后再次下载无法进行续传.网上有说可以通过AFD ...

  9. int和char的相同和不同。

    int和char在存储量上有不同而且在编程的时候,这样才是正确的,如果这样的话,这是一个区别. 第二:这个和上面的道理应该是差不多的.输出97   98. 总的来说,int和char都是一个定义量器的 ...

  10. WPF Step By Step -基础知识介绍

    回顾 上一篇我们介绍了WPF基本的知识.并且介绍了WPF与winform传统的cs桌面应用编程模式上的变化,这篇,我们将会对WPF的一些基础的知识做一个简单的介绍,关于这些基础知识更深入的应用则在后续 ...