Hadoop:用API来压缩从标准输入中读取的数据并将其写到标准输出

程序如下:

package com.lcy.hadoop.examples;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionOutputStream;
import org.apache.hadoop.util.ReflectionUtils;

public class StreamCompressor {

    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        String codecClassname=args[0];
        Class<?> codecClass=Class.forName(codecClassname);
        Configuration conf=new Configuration();
        CompressionCodec codec=(CompressionCodec)ReflectionUtils.newInstance(codecClass, conf);

        CompressionOutputStream out=codec.createOutputStream(System.out);
        IOUtils.copyBytes(System.in, out, 4096,false);
        out.finish();
    }
}

运行程序,输入如下命令:

[email protected]:~$ echo "lcyvino" | hadoop jar /usr/local/testJar/StreamComPressor.jar com.lcy.hadoop.examples.StreamCompressor org.apache.hadoop.io.compress.GzipCodec | gunzip

运行结果:

时间: 2024-10-07 01:54:57

Hadoop:用API来压缩从标准输入中读取的数据并将其写到标准输出的相关文章

编写一个程序,从标准输入中读取若干string对象并查找连续重复出现的单词。所谓连续重复出现的意思是:一个单词后面紧跟着这个单词本身。要求记录连续重复出现的最大次数以及对应的单词

#include<iostream> #include<string> #include<vector> using namespace std; int main() { string maxStr,Str1,Str2; int maxNum,Num1,Num2; if(cin>>Str1) Num1=1; maxNum=0; while(cin>>Str2) { Num2=1; if(Str2==Str1) Num2=++Num1; if(N

C# 操作地址 从内存中读取写入数据(初级)

本示例以植物大战僵尸为例, 实现功能为 每1秒让阳光刷新为 9999.本示例使用的游戏版本为 [植物大战僵尸2010年度版], 使用的辅助查看内存地址的工具是  CE. 由于每次启动游戏, 游戏中阳光地址都是变的, 唯一不变的基址1, 我们要通过CE工具找到基址1的地址, 可以算出阳光的地址. 基址2的地址 = 基址1中的值 + 偏移1; 阳光的的地址 = 基址2中的值 + 偏移2; 以下为简单示例:  窗口界面一个按钮 和 一个定时器 using System; using System.Co

R中读取EXCEL 数据的方法

最近初学R语言,在R语言读入EXCEL数据格式文件的问题上遇到了困难,经过在网上搜索解决了这一问题,下面归纳几种方法,供大家分享: 第一:R中读取excel文件中的数据的路径: 假定在您的电脑有一个excel文件,原始的文件路径是:D:\work\data\1 如果直接把这个路径拷贝到R中,就会出现错误,原因是: \是escape character(转义符),\\才是真正的\字符,或者用/ 因此,在R中有两种方法读取该路径: 1:在R中输入一下路径:D:\\work\\data\\1     

怎么在delphi中读取Excel数据(各种详细操作) 转

原文:http://www.cnblogs.com/azhqiang/p/3678832.html ( 一 ) 使用动态创建的方法 首先创建 Excel 对象,使用ComObj :Var  ExcelApp : Variant ;  ExcelApp := CreateOleObject ( '' Excel.Application '' ) ; 1 ) 显示当前窗口:  ExcelApp.Visible := True ; 2 ) 更改 Excel 标题栏:ExcelApp.Caption :

JAVA中读取xls数据方法介绍

用例编号(UI-0001) 用例名称({验证页面跳转|验证元素文本}-简要明确表述) 验证类型 是否执行 初始URL 初始元素xpath 目标元素xpath 目标元素属性 期望结果 UI-0001 验证页面跳转-登录 当前标签页 执行 http://www.yixun.com/ //a[@id='j_login'] 0 0 https://base.yixun.com/login.html UI-0002 验证页面跳转-购物车 当前标签页 执行 http://www.yixun.com/ //a

QT中读取文本数据(txt)

下面的代码实现读取txt文档中的数据,并且是一行一行的读取. void MainWindow::on_pushButton_clicked() { QFile file("abcd.txt"); if(! file.open(QIODevice::ReadOnly|QIODevice::Text)) qDebug()<<file.errorString(); else qDebug()<<"openok"; file.seek(0); QTe

hadoop Java API、 hadoop Streaming 、hadoop Pipes 三者比较学习

1.hadoop  Java  API Hadoop的主要编程语言是Java,因而,Java API是最基本的对外编程接口. 2. hadoop    Streaming             1.概述 它是为方便非java用户编写Mapreduce程序而设计的工具包. Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer, 例如: 采用shell脚本语言中的一些命令作为mapper和reducer(cat作

DTO – 服务实现中的核心数据

在一个Web服务的实现中,我们常常需要访问数据库,并将从数据库中所取得的数据显示在用户页面中.这样做的一个问题是:用于在用户页面上展示的数据和从数据库中取得的数据常常具有较大区别.在这种情况下,我们常常需要向服务端发送多个请求才能将用于在页面中展示的数据凑齐. 一个解决该问题的方法就是根据不同需求使用不同的数据表现形式.在一个服务实现中较为常见的数据表现形式有MO(Model Object,在有些上下文中也被称为VO,Value Object)和DTO(Data Transfer Object)

数据库的应用——直接从内存中读取osg节点 (转)

数据库的应用——直接从内存中读取osg节点 目的:要从数据库中读取节点数据到osg. 一开始的方法是这样的,每当我要添加一个数据库中的节点数据时,首先把它读取到内存中,然后写入一个文件,最后再次从文件中用osg的osgDB::readNodeFile()读取,这个方法是可行的,但是却很糟糕.我的初衷是不要经过文件转换. 现在问题解决了,多亏了osg::ReaderWriter提供一个虚函数: virtual ReadResult  readNode (std::istream &, const