国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用javaAPI對(duì)HDFS進(jìn)行文件上傳,下載,新建文件及文件夾刪除,遍歷所有文件

這篇具有很好參考價(jià)值的文章主要介紹了使用javaAPI對(duì)HDFS進(jìn)行文件上傳,下載,新建文件及文件夾刪除,遍歷所有文件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄文章來源地址http://www.zghlxwxcb.cn/news/detail-519234.html

//通過工具類來操作hdfs ? hdfs dfs -put d:user_info.txt ?/user_info.txt?

// 將文件放入到hdfs中

@Test
    public void test1() throws IOException {  //  構(gòu)建方法的時(shí)候,不要加 static 加了之后@Test就不能用了
        //操作hdfs
        //1. 初始化配置對(duì)象 需要new出來
        Configuration conf = new Configuration();
        //2. 添加配置 (其實(shí)就是提供一個(gè)key - value)
        conf.set("fs.defaultFS","hdfs://hadoop10:8020");
        //3. 構(gòu)建操作hdfs的具體工具類
        FileSystem fileSystem = FileSystem.get(conf);
        //通過工具類來操作hdfs   hdfs dfs -put d:user_info.txt  /user_info.txt
        // 將文件放入到hdfs中
        fileSystem.copyFromLocalFile(new Path("d:\\user_info.txt"),new Path("/"));
        // Permission denied: 看到這個(gè)就一定要想到權(quán)限問題
        // hdfs dfs -chmod -R 777 /
        /*
          運(yùn)行結(jié)果中有如下的信息,可以忽略
          SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
          SLF4J: Defaulting to no-operation (NOP) logger implementation
          SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
         */


        //關(guān)閉hdfs的連接工具
        if (fileSystem != null) {
            fileSystem.close();
        }

?2.通過工具類來操作hdfs ? hdfs dfs -get hdfs路徑 ? 本地路經(jīng)? 將文件放入到本地Windows中

@Test
    public void test2() throws IOException {
        //操作hdfs
        //1. 初始化配置對(duì)象 需要new出來
        Configuration conf = new Configuration();
        //2. 添加配置 (其實(shí)就是提供一個(gè)key - value)
        conf.set("fs.defaultFS","hdfs://hadoop10:8020");
        //3. 構(gòu)建操作hdfs的具體工具類
        FileSystem fileSystem = FileSystem.get(conf);
        //通過工具類來操作hdfs   hdfs dfs -get hdfs路徑   本地路徑
        // 將文件放入到本地Windows中(或者說,你的代碼運(yùn)行在哪里,你的本地就是哪里)
        fileSystem.copyToLocalFile(new Path("/user_info.txt"),new Path("D:\\BD2209太湖"));

        // 關(guān)閉操作工具類
        fileSystem.close();
    }

3.通過工具類來操作hdfs ? hdfs dfs -mkdir -p ?hdfs路徑

@Test
    public void test3() throws IOException {
        //操作hdfs
        //1. 初始化配置對(duì)象 需要new出來
        Configuration conf = new Configuration();
        //2. 添加配置 (其實(shí)就是提供一個(gè)key - value)
        conf.set("fs.defaultFS","hdfs://hadoop10:8020");
        //3. 構(gòu)建操作hdfs的具體工具類
        FileSystem fileSystem = FileSystem.get(conf);
        //通過工具類來操作hdfs   hdfs dfs -mkdir -p  hdfs路徑
        boolean mkdir_flag = fileSystem.mkdirs(new Path("/dir_from_java/dir1/dir2"));
        System.out.println(mkdir_flag);

        // 關(guān)閉操作工具類
        fileSystem.close();
    }

4.通過工具類來操作hdfs ?查看一個(gè)文件是否存在

@Test
    public void test4() throws IOException {
        //操作hdfs
        //1. 初始化配置對(duì)象 需要new出來
        Configuration conf = new Configuration();
        //2. 添加配置 (其實(shí)就是提供一個(gè)key - value)
        conf.set("fs.defaultFS","hdfs://hadoop10:8020");
        //3. 構(gòu)建操作hdfs的具體工具類
        FileSystem fileSystem = FileSystem.get(conf);
        //通過工具類來操作hdfs  查看一個(gè)文件是否存在
        boolean exists = fileSystem.exists(new Path("/suibian"));
        System.out.println(exists);

        boolean exists1 = fileSystem.exists(new Path("/test1"));
        System.out.println(exists1);

        // 關(guān)閉操作工具類
        fileSystem.close();
    }

5.刪除一個(gè)hdfs中的文件

@Test
    public void test5() throws IOException {
        //操作hdfs
        //1. 初始化配置對(duì)象 需要new出來
        Configuration conf = new Configuration();
        //2. 添加配置 (其實(shí)就是提供一個(gè)key - value)
        conf.set("fs.defaultFS","hdfs://hadoop10:8020");
        //3. 構(gòu)建操作hdfs的具體工具類
        FileSystem fileSystem = FileSystem.get(conf);
        //通過工具類來操作hdfs  hdfs dfs -rm hdfs絕對(duì)路徑
        // 刪除一個(gè)hdfs中的文件
        //  delete 方法自帶 -r 參數(shù),也就是直接調(diào)用的時(shí)候,就會(huì)遞歸刪除
        // 如果想要避免直接遞歸刪除,可以使用第二個(gè)參數(shù), false 來進(jìn)行控制
        boolean delete = fileSystem.delete(new Path("/test"),false);
        System.out.println(delete);

        // 關(guān)閉操作工具類
        fileSystem.close();
    }

6.查看某一個(gè)路徑下的所有文件以及文件夾

@Test
    public void test6() throws IOException {
        //操作hdfs
        //1. 初始化配置對(duì)象 需要new出來
        Configuration conf = new Configuration();
        //2. 添加配置 (其實(shí)就是提供一個(gè)key - value)
        conf.set("fs.defaultFS","hdfs://hadoop10:8020");
        //3. 構(gòu)建操作hdfs的具體工具類
        FileSystem fileSystem = FileSystem.get(conf);
        //通過工具類來操作hdfs  hdfs dfs -ls hdfs絕對(duì)路徑
        // 查看某一個(gè)路徑下的所有文件以及文件夾
        // listStatus 返回值是一個(gè)對(duì)象數(shù)組,那么為什么要返回一個(gè)對(duì)象數(shù)組呢?直接給一個(gè)String 數(shù)組不就行了嗎?
        // 對(duì)象中可以擁有屬性和方法,一個(gè)對(duì)象里面可以存儲(chǔ)大量的信息
        FileStatus[] fileStatuses = fileSystem.listStatus(new Path("/"));
        for (FileStatus fileStatus : fileStatuses) {
            System.out.println(fileStatus.getPath());
            System.out.println("是不是一個(gè)文件夾:"+fileStatus.isDirectory());
            System.out.println("文件大小是:"+fileStatus.getLen());
            System.out.println("副本數(shù):"+fileStatus.getReplication());
            System.out.println("------------------");
        }

        // 關(guān)閉操作工具類
        fileSystem.close();
    }

7.通過工具類來操作hdfs ?查看關(guān)于數(shù)據(jù)塊的信息

@Test
    public void test7() throws IOException {
        //操作hdfs
        //1. 初始化配置對(duì)象 需要new出來
        Configuration conf = new Configuration();
        //2. 添加配置 (其實(shí)就是提供一個(gè)key - value)
        conf.set("fs.defaultFS","hdfs://hadoop10:8020");
        //3. 構(gòu)建操作hdfs的具體工具類
        FileSystem fileSystem = FileSystem.get(conf);
        //通過工具類來操作hdfs  查看關(guān)于數(shù)據(jù)塊的信息
        // 文件本身對(duì)于 hdfs來說,是一個(gè)邏輯上的概念
        // listFiles 方法可以返回一個(gè)存放對(duì)象的迭代器,這個(gè)對(duì)象中有 數(shù)據(jù)塊的信息
        // 查看一個(gè)迭代器中的內(nèi)容時(shí),使用while循環(huán),while循環(huán)的剎車踏板:hasNext()
        // hasNext()返回的值是false的時(shí)候,就算是讀完了迭代器,返回true的時(shí)候,就是還有下一個(gè)元素需要讀取
        RemoteIterator<LocatedFileStatus> iterator = fileSystem.listFiles(new Path("/"), true);
        while (iterator.hasNext()){
            LocatedFileStatus fileStatus = iterator.next();
            System.out.println(fileStatus.getLen());
            System.out.println(fileStatus.getPath());
            BlockLocation[] blockLocations = fileStatus.getBlockLocations();
            //  這個(gè)循環(huán)會(huì)循環(huán)幾次,是根據(jù)一個(gè)文件被拆成了多少個(gè)塊決定的
            for (BlockLocation blockLocation : blockLocations) {
                String[] hosts = blockLocation.getHosts();
                String strHosts = Arrays.toString(hosts);
                String names = Arrays.toString(blockLocation.getNames());
                long offset = blockLocation.getOffset();
                long length = blockLocation.getLength();
                System.out.println("所在的DataNode是:"+names+" 所在主機(jī):"+strHosts+" 偏移量是:"+offset+" 塊的大小是:"+length);
            }
            System.out.println("--------------");
        }
        // 關(guān)閉操作工具類
        fileSystem.close();
    }

8.查看所有文件

 @Test
    public void test3() throws IOException {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://hadoop10:8020");
        FileSystem fileSystem = FileSystem.get(conf);
            //2:調(diào)用方法listFiles 獲取 /目錄下所有的文件信息,,參數(shù)true代表遞歸遍歷
            RemoteIterator<LocatedFileStatus> iterator = fileSystem.listFiles(new Path("/"), true);
            //3:遍歷迭代器
            while (iterator.hasNext()){
                LocatedFileStatus fileStatus = iterator.next();
                //getPath()方法就是獲取絕對(duì)路徑
                System.out.println(fileStatus.getPath() + "----" +fileStatus.getPath().getName());

                //文件的block信息
                BlockLocation[] blockLocations = fileStatus.getBlockLocations();
                for (BlockLocation blockLocation : blockLocations) {
                    String[] hosts = blockLocation.getHosts();
                    String strHosts = Arrays.toString(hosts);
                    String names = Arrays.toString(blockLocation.getNames());
                    long offset = blockLocation.getOffset();
                    long length = blockLocation.getLength();
                    System.out.println("所在的DataNode是:"+names+" 所在主機(jī):"+strHosts+" 塊的大小是:"+length);
                }

            }
        // 關(guān)閉操作工具類
        fileSystem.close();

    }

到了這里,關(guān)于使用javaAPI對(duì)HDFS進(jìn)行文件上傳,下載,新建文件及文件夾刪除,遍歷所有文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序文件相關(guān)操作(新建文件夾、下載、解壓、讀取等)

    wx.downloadFile() ?//下載 wx.getFileSystemManager() ?//獲取小程序的文件管理器 FileSystemManager.unzip() //解壓 FileSystemManager.readdir() ?//讀取文件夾 FileSystemManager.readFile() ?//讀取文件 FileSystemManager.access() //判斷文件/目錄是否存在 FileSystemManager.mkdir() ?//創(chuàng)建文件夾 index.js 在 onload 中獲取 F

    2024年02月15日
    瀏覽(51)
  • Github倉庫中怎么新建文件夾、Github的項(xiàng)目中如何上傳圖片

    在Github倉庫中創(chuàng)建新文件夾的步驟如下: 首先進(jìn)入您的Github倉庫頁面。 在倉庫頁面中,點(diǎn)擊“Add file”按鈕,然后選擇“Create new file”。 在文件名輸入框里輸入文件夾名稱,例如“my_folder/”,注意末尾要加上“/”來表示這是一個(gè)文件夾。 然后在文件名后面按回車鍵,Gith

    2024年02月04日
    瀏覽(22)
  • MobaXterm上傳下載文件、文件夾到服務(wù)器上

    MobaXterm上傳下載文件、文件夾到服務(wù)器上

    ? 首先通過SSH與服務(wù)器建立連接,不懂的可查閱相關(guān)資料,CSDN里有很多介紹。 1、上傳下載文件 可以在命令輸入窗口,無需輸入命令,按ctrl單擊的同時(shí)鼠標(biāo)右鍵出現(xiàn)以下左圖,選擇receive file using Z-modem或者send file?using Z-modem來上傳或者下載文件。 也可以通過mobaxterm左側(cè)的導(dǎo)

    2024年02月11日
    瀏覽(23)
  • Linux中使用SCP命令進(jìn)行上傳或者下載文件

    SCP(Secure Copy Protocol)是一種基于SSH的在網(wǎng)絡(luò)上安全傳輸文件的文件傳輸協(xié)議,使用SSH(Secure Shell)加密技術(shù)來保證數(shù)據(jù)在傳輸過程中的安全性。SCP 命令是Linux主機(jī)之間進(jìn)行上傳或者下載文件的最常用的命令,這是一個(gè)功能非常強(qiáng)大的工具,可以在任意二個(gè)主機(jī)之間快速的上傳與

    2024年02月16日
    瀏覽(28)
  • 【Java】對(duì)Minio指定Bucket大量文件的批量下載與本地文件夾的批量上傳

    【Java】對(duì)Minio指定Bucket大量文件的批量下載與本地文件夾的批量上傳

    需要批量下載一個(gè)bucket下的內(nèi)容,bucket下文件有19GB+,且文件夾結(jié)構(gòu)復(fù)雜,使用官方的Console無法完成這么大量文件的下載,而且也不支持文件夾的分享,所以自己寫個(gè)工具下載,順便把上傳的也寫了。 使用官方的打包下載,由于文件太多,一直轉(zhuǎn),而且session一失效,或者刷

    2024年02月09日
    瀏覽(37)
  • linux系統(tǒng)使用命令rz、sz進(jìn)行文件的上傳、下載

    ? 目錄 1、安裝: 2、使用rz上傳文件 第三步:使用sz下載文件 使用 tar 壓縮當(dāng)前文件夾下所有文件 : rz :本地上傳文件 sz :Linux服務(wù)器上的文件下載到本地。 用法:在linux中直接輸入 rz 然后回車 用法:sz 路徑文件名 下載多個(gè)文件: sz 文件1 文件2? 無法下載的文件夾,先進(jìn)

    2024年02月05日
    瀏覽(31)
  • Hadoop——HDFS的Java API操作(文件上傳、下載、刪除等)

    Hadoop——HDFS的Java API操作(文件上傳、下載、刪除等)

    1、創(chuàng)建Maven項(xiàng)目 2、修改pom.xml文件 3、添加四個(gè)配置文件 為避免運(yùn)行的一些錯(cuò)誤,我們將Hadoop的四個(gè)重要配置文件添加到resources中 4、創(chuàng)建測(cè)試文件JavaAPI 5、初始化 因?yàn)閷?duì)文件的操作我們都需要獲取hdfs對(duì)象和關(guān)閉對(duì)象,所以為避免重復(fù)編寫,將兩個(gè)操作對(duì)立成單獨(dú)方法,分別

    2024年02月06日
    瀏覽(104)
  • 使用element-ui的el-upload進(jìn)行excel文件上傳與下載

    使用element-ui的el-upload進(jìn)行excel文件上傳與下載

    需求:前端上傳文件后,后端接受文件進(jìn)行處理后直接返回處理后的文件,前端直接再將文件下載下來。 通常我們都是直接使用el-upload的action屬性來直接完成文件上傳的操作,如果要進(jìn)行后續(xù)文件的直接下載,可以在on-success中用代碼進(jìn)行操作,若存在401權(quán)限問題也可以直接

    2024年02月11日
    瀏覽(37)
  • 使用Git將文件夾上傳到Github以及使用Git LFS上傳大文件

    使用Git將文件夾上傳到Github以及使用Git LFS上傳大文件

    2024年04月14日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包