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

使用Hadoop 的 Java API 操縱 HDFS 文件系統(tǒng)

這篇具有很好參考價值的文章主要介紹了使用Hadoop 的 Java API 操縱 HDFS 文件系統(tǒng)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

0x00: 說明

使用 Java 操作 HDFS 文件系統(tǒng)可以使用其對應的Java API,即對應三個 jar 依賴包:

  • hadoop-common.jar (該文件在 hadoop-2.10.1.tar.gz 壓縮包中的 \share\hadoop\common 目錄下)
  • hadoop-hdfs.jar (該文件在 hadoop-2.10.1.tar.gz 壓縮包中的 \share\hadoop\hdfs 目錄下)
  • hadoop-client.jar (該文件在 hadoop-2.10.1.tar.gz 壓縮包中的 \share\hadoop\hdfs 目錄下)

這三個 jar 包的具體名字可能根據(jù)你所安裝的版本進行變化,在本文檔中這三個文件名稱具體如下:

使用Hadoop 的 Java API 操縱 HDFS 文件系統(tǒng)

此處我不推薦直接通過 jar 包引入依賴支持,本文中也將不在撰寫 jar 的方式引入,因為這三個jar還依賴于其他的依賴庫,例如 woodstox-core 等一系列jar包,過程較為繁瑣,因此本文中使用 pom 表引入對應配置,使用pom表來管理依賴后,子依賴會自動導入,不在需要我們手動引入,較為方便,pom表依賴配置如下:

<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-common</artifactId>
  <version>2.10.1</version>
</dependency>

<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-hdfs</artifactId>
  <version>2.10.1</version>
</dependency>

<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-client</artifactId>
  <version>2.10.1</version>
</dependency>

在本文中我將在宿主機使用 IDEA 創(chuàng)建對應工程調(diào)用虛擬機的 Java API 接口,創(chuàng)建基本 Java 工程在本文中將不在贅述,但請注意,在創(chuàng)建工程時請將系統(tǒng)編譯方式選擇為 Maven,如下圖所示:

使用Hadoop 的 Java API 操縱 HDFS 文件系統(tǒng)

0x01: 依賴導入

注意,在第三步引入后你會發(fā)現(xiàn)他是處于紅色的錯誤狀態(tài),此時點擊第四步刷新依賴后即可

使用Hadoop 的 Java API 操縱 HDFS 文件系統(tǒng)

引入依賴完成后如下圖所示,但因為版本問題存在相對較多的安全的漏洞提示,鼠標放在上方即可顯示相關的CVE漏洞編號,但我們僅僅只是學習用途,該問題我們直接忽略

使用Hadoop 的 Java API 操縱 HDFS 文件系統(tǒng)

該步驟完成后 pom 表中無紅色文本內(nèi)容時則代表已完成依賴引入

0x02: HDFS 文件創(chuàng)建

這里給出一段示例代碼,你可以用來驗證 HDFS 的 Java API 是否能正常工作。在開始前,你需要了解如下幾個注意點:

  1. 我們在訪問 hdfs 的時候會進行一個權(quán)限認證認證的過程,取用戶名的過程是這樣的:

首先讀取 HADOOP_USER_NAME系統(tǒng)環(huán)境變量,如果不為空,那么拿它作用戶名

如果為空,則讀取 HADOOP_USER_NAME 這個 java 環(huán)境變量,如果繼續(xù)為空,則拋出異常

因此在下方代碼中,我在第 19-20 行中加了環(huán)境變量配置,如果你不想進行該配置,則可以在第 27 行文件系統(tǒng)配置中進行修改,添加一個user參數(shù),代碼如下:

// 鏈接到文件系統(tǒng)
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.234.129:9000"), conf, "root");
  1. 該段代碼運行后可能會提示有找不到 logger 和 log4j 未正常初始化的配置,如下圖,但因為我們此處僅作學習用途,該警告我們可直接忽略。

使用Hadoop 的 Java API 操縱 HDFS 文件系統(tǒng)

完整實例代碼如下:

package org.example;

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

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;


public class Main {

    public static void main(String[] args) {

        // 配置環(huán)境變量
        Properties properties = System.getProperties();
        properties.setProperty("HADOOP_USER_NAME", "root");

        // 創(chuàng)建配置
        Configuration conf = new Configuration();

        try {

            // 鏈接到文件系統(tǒng)
            FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.234.129:9000"), conf);

            // 創(chuàng)建文件
            FSDataOutputStream fsDataOutputStream = fileSystem.create(new Path("/Tianxidev/test/1.txt"));

            // 寫入文件內(nèi)容到輸出流
            fsDataOutputStream.writeUTF("Hi HDFS!");

            // 輸出流提交 HDFS
            fsDataOutputStream.flush();

            // 關閉輸出流
            fsDataOutputStream.close();

            // 關閉文件系統(tǒng)
            fileSystem.close();

        } catch (IOException | URISyntaxException e) {
            throw new RuntimeException(e);
        }

    }

}

運行后,我們在虛擬機上執(zhí)行命令 hdfs dfs -ls / 查看 HDFS 文件系統(tǒng)根目錄,發(fā)現(xiàn)已多出一個我們代碼中創(chuàng)建的文件夾,使用 hdfs dfs -cat /Tianxidev/test/1.txt 查看我們創(chuàng)建的文件內(nèi)容發(fā)現(xiàn)寫入內(nèi)容為預期文本,此時則代表 HDFS 的 Java API 工作正常。

使用Hadoop 的 Java API 操縱 HDFS 文件系統(tǒng)

0x03: HDFS 文件夾創(chuàng)建

此處僅提供完整樣例代碼不在提供運行截圖,樣例代碼已經(jīng)過驗證

package org.example;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;


public class Main {

    public static void main(String[] args) {

        // 配置環(huán)境變量
        Properties properties = System.getProperties();
        properties.setProperty("HADOOP_USER_NAME", "root");

        // 創(chuàng)建配置
        Configuration conf = new Configuration();

        try {

            // 鏈接到文件系統(tǒng)
            FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.234.129:9000"), conf);

            // 創(chuàng)建文件夾
            fileSystem.mkdirs(new Path("/Tianxidev/test1"));

            // 關閉文件系統(tǒng)
            fileSystem.close();

        } catch (IOException | URISyntaxException e) {
            throw new RuntimeException(e);
        }

    }

}

0x04: 本地文件上傳 HDFS

此處僅提供完整樣例代碼不在提供運行截圖,樣例代碼已經(jīng)過驗證

package org.example;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;


public class Main {

    public static void main(String[] args) {

        // 配置環(huán)境變量
        Properties properties = System.getProperties();
        properties.setProperty("HADOOP_USER_NAME", "root");

        // 創(chuàng)建配置
        Configuration conf = new Configuration();

        try {

            // 鏈接到文件系統(tǒng)
            FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.234.129:9000"), conf);

            // 上傳本地文件
            fileSystem.copyFromLocalFile(new Path("D:\\temp\\hdfs_test_1.txt"),new Path("/Tianxidev/test1"));

            // 關閉文件系統(tǒng)
            fileSystem.close();

        } catch (IOException | URISyntaxException e) {
            throw new RuntimeException(e);
        }

    }

}

0x05: 讀取 HDFS 文件內(nèi)容

此處僅提供完整樣例代碼不在提供運行截圖,樣例代碼已經(jīng)過驗證

package org.example;

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

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;


public class Main {

    public static void main(String[] args) {

        // 配置環(huán)境變量
        Properties properties = System.getProperties();
        properties.setProperty("HADOOP_USER_NAME", "root");

        // 創(chuàng)建配置
        Configuration conf = new Configuration();

        try {

            // 鏈接到文件系統(tǒng)
            FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.234.129:9000"), conf);

            // 打開文件
            FSDataInputStream fsDataInputStream = fileSystem.open(new Path("/Tianxidev/test/1.txt"));

            // 打印文件內(nèi)容
            System.out.println("文件內(nèi)容: " + fsDataInputStream.readUTF());

            // 關閉輸入流
            fsDataInputStream.close();

            // 關閉文件系統(tǒng)
            fileSystem.close();

        } catch (IOException | URISyntaxException e) {
            throw new RuntimeException(e);
        }

    }

}

0x06: HDFS 文件下載本地

此處僅提供完整樣例代碼不在提供運行截圖,樣例代碼已經(jīng)過驗證

請注意,因為win系統(tǒng)文件系統(tǒng)結(jié)構(gòu)原因,會拋出如下報錯:

java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. 

出現(xiàn)該報錯時需要你引入 winutils 支持,winutil.exe 主要用于模擬linux下的目錄環(huán)境,你可以在互聯(lián)網(wǎng)上尋找該配置教程,如果你不想麻煩,也可以選擇通過 API 讀取文件內(nèi)容然后在使用 Java 文件相關API方法將文件流作為文件寫入系統(tǒng)。

package org.example;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;


public class Main {

    public static void main(String[] args) {

        // 配置環(huán)境變量
        Properties properties = System.getProperties();
        properties.setProperty("HADOOP_USER_NAME", "root");

        // 創(chuàng)建配置
        Configuration conf = new Configuration();

        try {

            // 鏈接到文件系統(tǒng)
            FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.234.129:9000"), conf);

            // 下載文件到本地
            fileSystem.copyToLocalFile(new Path("/Tianxidev/test1/hdfs_test_1.txt"),new Path("D:\\temp\\hdfs_test_1.txt"));

            // 關閉文件系統(tǒng)
            fileSystem.close();

        } catch (IOException | URISyntaxException e) {
            throw new RuntimeException(e);
        }

    }

}

0x07: 遠程刪除 HDFS 文件或文件夾

此處僅提供完整樣例代碼不在提供運行截圖,樣例代碼已經(jīng)過驗證文章來源地址http://www.zghlxwxcb.cn/news/detail-424263.html

package org.example;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;


public class Main {

    public static void main(String[] args) {

        // 配置環(huán)境變量
        Properties properties = System.getProperties();
        properties.setProperty("HADOOP_USER_NAME", "root");

        // 創(chuàng)建配置
        Configuration conf = new Configuration();

        try {

            // 鏈接到文件系統(tǒng)
            FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.234.129:9000"), conf);

            // b: true 遞歸刪除目錄 false 刪除指定文件
            fileSystem.delete(new Path("/Tianxidev/test1/hdfs_test_1.txt"),false);
            fileSystem.delete(new Path("/Tianxidev"),true);

            // 關閉文件系統(tǒng)
            fileSystem.close();

        } catch (IOException | URISyntaxException e) {
            throw new RuntimeException(e);
        }

    }

}

到了這里,關于使用Hadoop 的 Java API 操縱 HDFS 文件系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 使用Java API對HDFS進行如下操作:文件的創(chuàng)建、上傳、下載以及刪除等操作

    使用Java API對HDFS進行如下操作:文件的創(chuàng)建、上傳、下載以及刪除等操作

    HDFS-JAVA接口:上傳文件 將一個本地文件(無具體要求)上傳至HDFS中的/hdfs-test路徑下(如無此路徑,新建一個)。 新建路徑: ? 首先在路徑/usr/test/ 下新建test.txt,指令為:/usr/test/test.txt,然后進行上傳操作。 ? ? ?2.HDFS-JAVA接口:創(chuàng)建文件 在HDFS中的/hdfs-test路徑下新建一個da

    2024年02月07日
    瀏覽(29)
  • hadoop調(diào)用HDFS java api實現(xiàn)在HDFS上創(chuàng)建文件夾

    hadoop調(diào)用HDFS java api實現(xiàn)在HDFS上創(chuàng)建文件夾

    目錄 一、前期準備 1、Hadoop集群已配置完畢 2、Linux系統(tǒng)安裝jdk 3、安裝并破解IntelliJ?IDEA 二、通過JAVA API操縱HDFS 1.在IDEA中創(chuàng)建項目 ?2.在hdfs項目的src-main-java路徑下創(chuàng)建一個包,然后在包下創(chuàng)建一個java類實現(xiàn)hdfs的文件操作 ?3.java類的代碼 4.對JAVA程序傳入?yún)?shù)后運行程序 ?5

    2024年02月08日
    瀏覽(92)
  • Java API 操作HDFS文件

    使用JavaAPI操作hdfs 文件的常用操作代碼 1.創(chuàng)建目錄 2.創(chuàng)建文件 3.重命名 4.上傳本地文件到hdfs 5.查看某個目錄下的所有文件 6.查看文件塊信息 7.文件讀寫 8.文件上傳 9.文件下載 10.使用字節(jié)流讀取數(shù)據(jù) 11.刪除文件 12.刪除文件夾 13.自定義數(shù)據(jù)輸入流

    2024年02月11日
    瀏覽(18)
  • Hadoop HDFS分布式文件系統(tǒng)(介紹以及基礎操作命令)

    Hadoop HDFS分布式文件系統(tǒng)(介紹以及基礎操作命令)

    目錄 一、為什么需要分布式存儲? 二、分布式的基礎架構(gòu)分析 ?三、HDFS基礎架構(gòu) 1.HDFS簡介 四、HDFS集群啟停命令 1.一鍵啟停腳本 2.單進程啟停 五、HDFS基本操作命令 1.創(chuàng)建文件夾 ?2.查看指定目錄下內(nèi)容? 3.上傳文件到HDFS指定目錄下 ?4.查看HDFS文件內(nèi)容 5.下載HDFS文件 ?6.拷貝

    2024年02月05日
    瀏覽(166)
  • Hadoop HDFS的API操作

    Hadoop HDFS的API操作

    hadoop的 Windows依賴文件夾,拷貝hadoop-3.1.0到非中文路徑(比如d:)。 配置HADOOP_HOME環(huán)境變量 配置Path環(huán)境變量。 不能放在包含有空格的目錄下,cmd 輸入hadoop顯示此時不應有 hadoop-3.0.0bin。我放在E:Program Files (x86) hadoop-3.0.0bin中,就出現(xiàn)錯誤 驗證Hadoop環(huán)境變量是否正常。雙擊

    2024年02月05日
    瀏覽(16)
  • 【Hadoop】HDFS API 操作大全

    【Hadoop】HDFS API 操作大全

    ?? 個人主頁——??開著拖拉機回家_Linux,大數(shù)據(jù)運維-CSDN博客 ????? ???? 希望本文能夠給您帶來一定的幫助??文章粗淺,敬請批評指正!???? ???????????????? ?????????????? ???????????????????????? ?????? ???????? 感謝點贊和關注 ,

    2024年02月07日
    瀏覽(18)
  • Hadoop入門學習筆記——三、使用HDFS文件系統(tǒng)

    Hadoop入門學習筆記——三、使用HDFS文件系統(tǒng)

    視頻課程地址:https://www.bilibili.com/video/BV1WY4y197g7 課程資料鏈接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd=5ay8 Hadoop入門學習筆記(匯總) 3.1.1. HDFS文件系統(tǒng)基本信息 HDFS和Linux系統(tǒng)一樣,均是以 / 作為根目錄的組織形式; 如何區(qū)分HDFS和Linux文件系統(tǒng): Linux文件系統(tǒng)以 file:// 作為

    2024年01月16日
    瀏覽(31)
  • 大數(shù)據(jù)學習:使用Java API操作HDFS

    大數(shù)據(jù)學習:使用Java API操作HDFS

    一、創(chuàng)建Maven項目 二、添加依賴 在 pom.xml 文件里添加 hadoop 和 junit 依賴 三、創(chuàng)建日志屬性文件 在 resources 目錄里創(chuàng)建 log4j.properties 文件 代碼 四、在HDFS上創(chuàng)建文件 在 /ied01 目錄創(chuàng)建 hadoop2.txt 文件 創(chuàng)建 net.xxr.hdfs 包,在包里創(chuàng)建 CreateFileOnHDFS 類 編寫 create1() 方法 結(jié)果 利用H

    2024年02月08日
    瀏覽(23)
  • 分布式文件系統(tǒng)HDFS之利用Java API與HDFS進行交互

    分布式文件系統(tǒng)HDFS之利用Java API與HDFS進行交互

    文章目錄 一、環(huán)境要求 二、在Ubuntu中安裝Eclipse 三、在Eclipse創(chuàng)建項目 四、為項目添加需要用到的JAR包 五、編寫Java應用程序代碼? 總結(jié) Hadoop不同的文件系統(tǒng)之間通過調(diào)用Java API進行交互,利用Java API進行交互,需要利用軟件Eclipse編寫Java程序。 已經(jīng)配置好網(wǎng)絡的Ubuntu系統(tǒng)的虛

    2023年04月21日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包