最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot集成Hadoop實(shí)現(xiàn)文件的上傳和下載功能

 更新時(shí)間:2024年07月11日 12:07:37   作者:街角等待  
Spring?Hadoop簡化了Apache?Hadoop,提供了一個(gè)統(tǒng)一的配置模型以及簡單易用的API來使用HDFS、MapReduce、Pig以及Hive,這篇文章主要介紹了SpringBoot集成Hadoop實(shí)現(xiàn)文件的上傳和下載,需要的朋友可以參考下

Spring Hadoop簡單概述

Spring Hadoop官網(wǎng)地址如下:

https://projects.spring.io/spring-hadoop/

Spring Hadoop簡化了Apache Hadoop,提供了一個(gè)統(tǒng)一的配置模型以及簡單易用的API來使用HDFS、MapReduce、Pig以及Hive。還集成了其它Spring生態(tài)系統(tǒng)項(xiàng)目,如Spring Integration和Spring Batch.。

特點(diǎn):

  • 支持創(chuàng)建Hadoop應(yīng)用,配置使用依賴注入和運(yùn)行標(biāo)準(zhǔn)的java應(yīng)用程序和使用Hadoop的命令行工具
  • 集成Spring Boot,可以簡單地創(chuàng)建Spring應(yīng)用程序去連接HDFS進(jìn)行讀寫數(shù)據(jù)。
  • 創(chuàng)建和配置,使用java的MapReduce,Streaming,Hive,Pig或HBase。
  • 擴(kuò)展Spring Batch支持創(chuàng)建基于Hadoop的工作流的任何類型的Hadoop Job或HDFS的操作。
  • 腳本HDFS操作使用任何基于JVM的腳本語言。
  • 基于SpringBoot輕松地創(chuàng)建自定義的基礎(chǔ)應(yīng)用,應(yīng)用可以部署在YARN上。
  • 支持DAO,可以使用模板或回調(diào)的方式操作Hbase
  • 支持Hadoop安全驗(yàn)證

Springboot整合HBase數(shù)據(jù)庫

安裝Hadoop可參考:http://www.fzitv.net/server/324127043.htm

1、pom文件中增加依賴

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>2.5.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>3.3.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>3.3.6</version>
        </dependency>
		<!--需要指定hadoop-auth、hadoop-common版本,否則容易出現(xiàn)版本沖突-->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-auth</artifactId>
            <version>3.3.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.3.6</version>
        </dependency>

2、在.yml配置文件中增加配置

hadoop:
  name-node: hdfs://test:8020

3、連接Hadoop庫的配置類

import lombok.extern.slf4j.Slf4j;
import org.apache.hadoop.fs.FileSystem;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.net.URI;
/**
 * @description: Hadoop配置類
 * @version: 1.0
 */
@Configuration
@Slf4j
public class HadoopConfig {
    @Value("${hadoop.name-node}")
    private String nameNode;
    @Bean("fileSystem")
    public FileSystem fileSystem() {
        //讀取配置文件
        org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
        conf.set("dfs.replication", "1");
        // 文件系統(tǒng)
        FileSystem fileSystem = null;
        // 返回指定的文件系統(tǒng),如果在本地測試,需要使用此種方法獲取文件系統(tǒng)
        try {
            URI uri = new URI(nameNode.trim());
            fileSystem = FileSystem.get(new URI(nameNode), conf, "root");
        } catch (Exception e) {
            log.error("文件系統(tǒng)獲取發(fā)生異常", e);
        }
        return fileSystem;
    }
}

4、Hadoop工具類,實(shí)現(xiàn)文件的上傳和下載

import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.springframework.stereotype.Component;
import java.io.*;
/**
 * @description: hadoop操作類
 * @version: 1.0
 */
@Slf4j
@Component
public class HadoopUtil {
    @Resource
    private FileSystem fileSystem;
    /**
     * 上傳文件
     * @param file 文件
     * @param destPath 上傳的路徑
     */
    public void uploadFile(File file, String destPath) {
        try (InputStream inputStream = new FileInputStream(file);
             FSDataOutputStream outputStream = fileSystem.create(new Path(destPath))) {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            // 刷新輸出流以確保所有數(shù)據(jù)都被寫入HDFS
            outputStream.flush();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * 下載文件
     * @param filePath 文件路徑
     * @return InputStream 返回inputStream類型  根據(jù)自己的需求就行轉(zhuǎn)換
     * @throws IOException
     */
    public InputStream download(String filePath) throws IOException {
        return fileSystem.open(new Path(filePath));
    }
    /**
     * 刪除文件
     * @param filePath 文件路徑
     * @throws IOException
     */
    public void deleteFile(String filePath) throws IOException {
        fileSystem.delete(new Path(filePath), true);
    }
}

5、測試

import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.xxx.xxx.HadoopUtil;
import java.io.File;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
@Slf4j
@Service
public class Test {
	@Resource
    private HadoopUtil hadoopUtil;
	public String test(){
		// 一、本地文件上傳hdfs
        File file = new File("/you/file/path/文件名");
        hadoopUtil.uploadFile(file, "/you/upload/path/文件名");
		// 二、下載hadoop中的文件并傳為String
        try (InputStream in = hadoopUtil.download("/文件名")) {
            String str = new Scanner(in, StandardCharsets.UTF_8).useDelimiter("\\A").next();
            log.info("結(jié)果" + str);
        } catch (IOException e) {
            log.error("文件導(dǎo)出發(fā)生異常")
        }
    }
}

6、測試hdfs中是否存在文件

命令:hdfs dfs -ls /you-file-path

[root@test app]# hdfs dfs -ls /cda
Found 1 items
-rw-r--r--   1 root supergroup      23005 2024-07-08 17:13 /cda/EMR-SD-01-病歷概要-T01-001.xml

到此這篇關(guān)于SpringBoot集成Hadoop實(shí)現(xiàn)文件的上傳和下載的文章就介紹到這了,更多相關(guān)SpringBoot文件上傳和下載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Spring Boot操作MongoDB的方法教程

    利用Spring Boot操作MongoDB的方法教程

    mongodb是最早熱門非關(guān)系數(shù)據(jù)庫的之一,使用也比較普遍,一般會用做離線數(shù)據(jù)分析來使用,放到內(nèi)網(wǎng)的居多,下面這篇文章主要給大家介紹了利用Spring Boot操作MongoDB的方法教程,需要的朋友可以參考下
    2017-05-05
  • Java算法之歸并排序舉例詳解

    Java算法之歸并排序舉例詳解

    這篇文章主要介紹了Java算法之歸并排序的相關(guān)資料,歸并排序是一種遞歸排序算法,通過將數(shù)組分成更小的子數(shù)組,遞歸地排序這些子數(shù)組,然后將它們合并成有序數(shù)組,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • SpringBoot加載多個(gè)配置文件實(shí)現(xiàn)dev、product多環(huán)境切換的方法

    SpringBoot加載多個(gè)配置文件實(shí)現(xiàn)dev、product多環(huán)境切換的方法

    這篇文章主要介紹了SpringBoot加載多個(gè)配置文件實(shí)現(xiàn)dev、product多環(huán)境切換,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Mybatis之映射實(shí)體類中不區(qū)分大小寫的解決

    Mybatis之映射實(shí)體類中不區(qū)分大小寫的解決

    這篇文章主要介紹了Mybatis之映射實(shí)體類中不區(qū)分大小寫的解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringIOC框架的簡單實(shí)現(xiàn)步驟

    SpringIOC框架的簡單實(shí)現(xiàn)步驟

    這篇文章主要介紹了SpringIOC框架簡單實(shí)現(xiàn)步驟,幫助大家更好的理解和學(xué)習(xí)使用Spring,感興趣的朋友可以了解下
    2021-05-05
  • spring boot前后端傳參的實(shí)現(xiàn)

    spring boot前后端傳參的實(shí)現(xiàn)

    這篇文章主要介紹了spring boot前后端傳參的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 深入理解Spring?Boot中的Flyway

    深入理解Spring?Boot中的Flyway

    Flyway將數(shù)據(jù)庫結(jié)構(gòu)的變更定義為一系列遷移腳本,通常是SQL腳本文件,當(dāng)應(yīng)用程序啟動時(shí),F(xiàn)lyway會自動檢測并執(zhí)行未應(yīng)用的遷移腳本,將數(shù)據(jù)庫升級到最新版本,這篇文章主要介紹了深入理解Spring?Boot中的Flyway,需要的朋友可以參考下
    2024-01-01
  • Spring前后端跨域請求設(shè)置代碼實(shí)例

    Spring前后端跨域請求設(shè)置代碼實(shí)例

    這篇文章主要介紹了Spring前后端跨域請求設(shè)置代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • springboot實(shí)現(xiàn)全局異常處理及自定義異常類

    springboot實(shí)現(xiàn)全局異常處理及自定義異常類

    這篇文章主要介紹了springboot實(shí)現(xiàn)全局異常處理及自定義異常類,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java判斷遠(yuǎn)程服務(wù)器上的文件是否存在的方法

    java判斷遠(yuǎn)程服務(wù)器上的文件是否存在的方法

    java判斷遠(yuǎn)程服務(wù)器上的文件是否存在的方法,需要的朋友可以參考一下
    2013-03-03

最新評論

天水市| 江津市| 磐石市| 涿鹿县| 文山县| 富裕县| 阳西县| 河间市| 高安市| 清流县| 和林格尔县| 海伦市| 平罗县| 大新县| 清远市| 嵊州市| 民权县| 洞口县| 鹤山市| 张家界市| 灌云县| 淳化县| 米林县| 奇台县| 赣州市| 江阴市| 社会| 柯坪县| 色达县| 通许县| 靖远县| 新竹市| 成武县| 肇东市| 仁化县| 西盟| 丰顺县| 运城市| 许昌市| 吴旗县| 句容市|