成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Hadoop文件合并——HadoopInAction上的一個(gè)示例

    上一篇文章已經(jīng)詳細(xì)的說(shuō)明了如何在Eclipse下面遠(yuǎn)程連接Hadoop集群,進(jìn)行Hadoop程序開(kāi)發(fā)。這里說(shuō)明一個(gè)Hadoop In Action書(shū)上的一個(gè)示例,可能是由于Hadoop版本更新的問(wèn)題,導(dǎo)致樹(shù)上的一些個(gè)示例程序沒(méi)有辦法正常執(zhí)行。

10年積累的成都網(wǎng)站制作、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有蘆溪免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

    整個(gè)代碼的工作就是把本地目錄下個(gè)若干個(gè)小文件,合并成一個(gè)較大的文件,寫(xiě)入到HDFS中。話不多說(shuō),代碼如下:

    補(bǔ)充說(shuō)明:后來(lái)發(fā)現(xiàn),書(shū)上的源代碼是沒(méi)有問(wèn)題的,只不過(guò)是書(shū)上的源代碼要打成jar包,放在集群的機(jī)器上去運(yùn)行,如果在Eclipse下面調(diào)試運(yùn)行的話,就會(huì)出現(xiàn)問(wèn)題。出現(xiàn)問(wèn)題的原因如下

//讀取本地文件系統(tǒng),如果要想正確運(yùn)行,必須要打成jar包,在hadoop集群的機(jī)器上面運(yùn)行
FileSystem hdfs = FileSystem.get(conf);
FileSystem local = FileSystem.getLocal(conf);

//通過(guò)URI可以遠(yuǎn)程讀取HDFS,所以Eclipse下面調(diào)試要使用這種寫(xiě)法,打成jar包這種形式也是可以的
FileSystem hdfs = FileSystem.get(URI.create(serverPath), conf);
FileSystem local = FileSystem.getLocal(conf);

package com.hadoop.examples;
import java.io.IOException;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

/**
 * @Package
 * @ClassName: PutMerge
 * @Description: 讀取本地目錄下的文件,寫(xiě)入到HDFS,在寫(xiě)入的過(guò)程中,
 *                 把這三個(gè)文件合成一個(gè)文件
 * @author lxy
 * @date 2015年3月25日 上午9:59:38
 * @version V1.0
 */

public class PutMerge {

    public static void main(String[] args) throws IOException {

        // 輸入目錄,目錄下有三個(gè)txt,文章最后面會(huì)兒給出文件內(nèi)容
        String localPathStr = "E:\\test";
        // 輸出目錄,HDFS路徑,文章最后面會(huì)給出合并之后的文件內(nèi)容
        String serverPath =
                "hdfs://192.168.3.57:8020/user/lxy/mergeresult/merge.txt";
        
        //輸入目錄,是一個(gè)本地目錄
        Path inputDir = new Path(localPathStr);
        //輸出目錄,是一個(gè)HDFS路徑
        Path hdfsFile = new Path(serverPath);

        Configuration conf = new Configuration();

        /**
         * Hadoop in Action的原代碼如下 
         * FileSystem hdfs = FileSystem.get(conf);
         * 但是這樣的話,使用Eclipse調(diào)試時(shí),執(zhí)行下面的語(yǔ)句是就會(huì)報(bào)異常,因?yàn)樗亲x取本地
         * 文件系統(tǒng)
         *  FSDataOutputStream out = hdfs.create(hdfsFile);
         */
        // 根據(jù)上面的serverPath,獲取到的是一個(gè)org.apache.hadoop.hdfs.DistributedFileSystem對(duì)象
        FileSystem hdfs = FileSystem.get(URI.create(serverPath), conf);
        FileSystem local = FileSystem.getLocal(conf);

        try {
            //獲取輸入目錄下的文件以及文件夾列表
            FileStatus[] inputFiles = local.listStatus(inputDir);
            //在hdfs上創(chuàng)建一個(gè)文件
            FSDataOutputStream out = hdfs.create(hdfsFile);

            for (int i = 0; i < inputFiles.length; i++) {
                System.out.println(inputFiles[i].getPath().getName());
                //打開(kāi)本地輸入流
                FSDataInputStream in = local.open(inputFiles[i].getPath());
                byte buffer[] = new byte[256];
                int bytesRead = 0;
                while ((bytesRead = in.read(buffer)) > 0) {
                    //往hdfs上的文件寫(xiě)數(shù)據(jù)
                    out.write(buffer, 0, bytesRead);
                }
                //釋放資源
                in.close();
            }
            //釋放資源
            out.close();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

    我的測(cè)試目錄下有三個(gè)txt文件

Hadoop文件合并——Hadoop In Action上的一個(gè)示例

    1.txt

1 hello Hadoop
2 hello Hadoop
3 hello Hadoop
4 hello Hadoop
5 hello Hadoop
6 hello Hadoop
7 hello Hadoop

    2.txt

8 hello Hadoop
9 hello Hadoop
10 hello Hadoop
11 hello Hadoop
12 hello Hadoop
13 hello Hadoop
14 hello Hadoop

    3.txt

15 hello Hadoop
16 hello Hadoop
17 hello Hadoop
18 hello Hadoop
19 hello Hadoop
20 hello Hadoop
21 hello Hadoop

    合并之后的文件如下所示:

Hadoop文件合并——Hadoop In Action上的一個(gè)示例

標(biāo)題名稱:Hadoop文件合并——HadoopInAction上的一個(gè)示例
文章路徑:http://jinyejixie.com/article40/gpiiho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、ChatGPT、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站排名搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
葵青区| 平邑县| 鄂州市| 珲春市| 察隅县| 富川| 伊金霍洛旗| 丹棱县| 乐业县| 连州市| 雅安市| 雅安市| 法库县| 新平| 新田县| 安义县| 东乌| 梧州市| 本溪| 始兴县| 南投县| 垫江县| 克什克腾旗| 石家庄市| 宜川县| 通河县| 漳浦县| 巫山县| 波密县| 泾阳县| 巴里| 潞西市| 托克逊县| 运城市| 贡山| 佛坪县| 宜宾市| 海口市| 登封市| 高平市| 镇雄县|