ホームページ Java &#&チュートリアル Java で HDFS ファイルのアップロードとダウンロードを実装する方法

Java で HDFS ファイルのアップロードとダウンロードを実装する方法

Apr 28, 2023 pm 11:43 PM
java hdfs

1、pom.xml配置

<!--配置-->
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <hadoop.version>3.1.3</hadoop.version>
</properties>
<!--依赖库-->
<dependencies>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-common</artifactId>
          <version>${hadoop.version}</version>
    </dependency>
    <dependency>
         <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-mapreduce-client-core</artifactId>
          <version>${hadoop.version}</version>
    </dependency>
</dependencies>
ログイン後にコピー

2、创建与删除

//导包
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
public static void main( String[] args ){
    //初始化hadoop文件系统的configration对象
    Configuration conf = new Configuration();
    //将hadoop的configration信息传入
    conf.set("fs.defaultFS","hdfs://192.168.50.102:9000");
    //初始化Hadoop文件系统的句柄
    FileSystem fs=null;
    try {
        //配置Hadoop的文件句柄信息
        fs=FileSystem.get(conf);
        //定义Hadoop的文件路径
        final String PATH="/test/kb16/hadoop/ratings.csv";
        //初始化Hadoop的路径信息
        Path path = new Path(PATH);
        //如果文件路径存在就删除
        if (fs.exists(path)) {
            System.out.println("DELETE "+fs.delete(path, true));
        }else{
            //如果文件路径不存在就创建
            System.out.println("CREATE "+fs.create(path));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        //结束的时候,句柄还没有释放就进行释放
        if (fs!=null) {
            try {
                fs.close() ;
            }catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
ログイン後にコピー

3、文件上传

//导包
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.File;
import java.io.IOException;
public static void main(String[] args) {
    //定义本地上传文件路径
    final String formPath="E:\\ratings.csv";
    //本地文件不存在就报错,并强制让程序终止
    if (!new File(formPath).exists()) {
        System.out.println(formPath +"doesn&#39;t exits");
        return;
    }
    //初始化hadoop文件系统的configration对象
    Configuration conf = new Configuration();
    //将hadoop的configration信息传入
    conf.set("fs.defaultFS","hdfs://192.168.50.102:9000");
    //初始化Hadoop文件系统的句柄
    FileSystem fs=null;
    try {
        //将config信息传入
        fs=FileSystem.get(conf);
        //定义上传到HDFS的路径
        final String toPath="/test/kb16/hive";
        //初始化路径
        Path to =new Path(toPath);
        //如果文件路径存在不执行,如果文件路径不存在就尝试创建,如果创建失败就跳过
          if (!fs.exists(to)&& !fs.mkdirs(to)) {
            System.out.println(toPath +"doesn&#39;t exit and can&#39;t be created");
            return;
        }
        //初始化上传文件路径
        Path from=new Path(formPath);
        //利用方法将本地文件复制到HDFS中
        fs.copyFromLocalFile(from, to);
        System.out.println("succeed in copying from "+formPath+" to "+toPath);
    } catch (IOException e) {
        e.printStackTrace();
        System.out.println("FAILURE");
    }finally{
        //如果结束Hadoop文件系统句柄没有关闭,利用方法进行句柄释放
        if (null!=fs) {
            try {
                fs.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
ログイン後にコピー

4、文件下载

//导包
import com.google.inject.internal.cglib.core.$LocalVariablesSorter;
import com.google.inject.internal.cglib.proxy.$Factory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.File;
import java.io.IOException;
public class Download {
    public static void main(String[] args) {
        //定义文件下载路径
        final String toPath = "C:\\Users\\Jialin\\Desktop";
        //获取路径
        File to = new File(toPath);
        //如果路存在或者文件路径不存在但是创建成功就不执行if方法
        if (!to.exists()&&!to.mkdirs()) {
            System.err.println(toPath + "doesn&#39;t exist and can&#39;t be created");
            return;
        }
        //初始化hadoop文件系统的configration对象
        Configuration config = new Configuration();
        //将hadoop的configration信息传入
        config.set("fs.defaultFS", "hdfs://192.168.50.102:9000");
        //初始化Hadoop文件系统的句柄
        FileSystem fs = null;
        try {
            //将config信息传入
            fs = FileSystem.get(config);
            //定义下载文件路径
            final String fromPath = "/test/kb16/hive/ratings.csv";
            //获取路径信息
            Path from = new Path(fromPath);
            //如果指定下载文件不存在就退出
            if (!fs.exists(from)) {
                System.err.println(toPath + "doesn&#39;t exist ");
                return;
            }
            //获取文件下载路径信息
            Path _to = new Path(toPath);
            //利用方法将Hadoop文件下载到本地
            fs.copyToLocalFile(from,_to);
            System.out.println("succeed in downloading from "+fromPath+" to"+toPath);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("FAILURE");
        } finally {
            //如果结束Hadoop文件系统句柄没有关闭,利用方法进行句柄释放
            if (null != fs)
                try {
                    fs.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    }
}
ログイン後にコピー

以上がJava で HDFS ファイルのアップロードとダウンロードを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

See all articles