zoukankan      html  css  js  c++  java
  • hadoop-streaming 配置之---参数分割

    map:
    -D stream.map.output.field.separator=. 定义mapoutput字段的分隔符为.  用户可以自定义分隔符(除了默认的tab)
    -D stream.num.map.output.key.fields=4  第四个.前面的是key,后面的是value。如果该行.的个数少于四个,则整行数据就是key,value是空。  
    总结:就是划分map输出的key与value的。因为输出的都是文本行。都有个划分标志。
    对应context.write(key, value)
    
    reduce:(同上)
    -D stream.reduce.output.field.separator=SEP
    -D stream.num.reduce.output.fields=NUM
    
    
    partitioner
    -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner
    -D stream.map.output.field.separator=.
    -D stream.num.map.output.key.fields=4
    -D map.output.key.field.separator=.       字面的解释:map的输出key的field的separator=.   (对key再进行切分==二面)
    #-D num.key.fields.for.partition=2        指定将key分割后的前两部分用做partition
    -D mapred.text.key.partitioner.options=-k1,2    附注:-k1,2 指定对key进行划分后第1 2个域进行划分(上述解释没有找到相关文档,也不属于原文) 
    
    example1
    Output输出(keys) 因为  -D stream.num.map.output.key.fields=4 指定map的输出行前4个作为key,后面为value
    11.12.1.2  
    11.14.2.3  
    11.11.4.1  
    11.12.1.1  
    11.14.2.2
    划分到3个reducer(前面2个字段作为partition的keys)  
    11.11.4.1  
    -----------  
    11.12.1.2  
    11.12.1.1  
    -----------  
    11.14.2.3  
    11.14.2.2  
    
    
    Reducer的每个划分内排序(4个字段同时用于排序)   实现了partitioner不是用map的输出key做partition而是用key的某一部分,对应了java中的自定义partitioner
    11.11.4.1  
    -----------  
    11.12.1.1  
    11.12.1.2  
    -----------  
    11.14.2.2  
    11.14.2.3 
    
    example2
    -D mapred.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator
    -D stream.map.output.field.separator=. 
    -D stream.num.map.output.key.fields=4 
    -D map.output.key.field.separator=.
    -D mapred.text.key.comparator.options=-k2,2nr
    -k2,2nr 中-k2,2指定key分割后的第2个域进行排序,n 指定使用数字排序,r指定排序结果最后要进行反转
    Map输出(keys)  
    11.12.1.2  
    11.14.2.3  
    11.11.4.1  
    11.12.1.1  
    11.14.2.2  
    Reducer的输出(使用第二个字段进行排序)   
    11.14.2.3  
    11.14.2.2  
    11.12.1.2  
    11.12.1.1  
    11.11.4.1 
  • 相关阅读:
    超赞!推荐一个专注于Java后端源码分析的Github项目!
    SpringApplication对象是如何构建的? SpringBoot源码(八)
    Java是如何实现自己的SPI机制的? JDK源码(一)
    SpringBoot的启动流程是怎样的?SpringBoot源码(七)
    SpringBoot内置的各种Starter是怎样构建的?--SpringBoot源码(六)
    外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五)
    SpringBoot是如何实现自动配置的?--SpringBoot源码(四)
    设计模式目录
    桥接模式
    常见的HTTP状态码
  • 原文地址:https://www.cnblogs.com/i80386/p/4210518.html
Copyright © 2011-2022 走看看