专栏首页用户3288143的专栏【快速入门大数据】Hadoop集成Spring的使用

【快速入门大数据】Hadoop集成Spring的使用

官网sprng-hadoop

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

添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-hadoop</artifactId>
        <version>2.5.0.RELEASE</version>
    </dependency>
</dependencies>

使用spring hadoop配置及查看HDFS文件

新建资源文件beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:hdp="http://www.springframework.org/schema/hadoop"
        xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/hadoop
        http://www.springframework.org/schema/hadoop/spring-hadoop.xsd">

    <hdp:configuration id="hadoopConfiguration">
        fs.defaultFS=hdfs://hadoop01:9000
        hadoop.tmp.dir=/tmp/hadoop
        electric=sea
    </hdp:configuration>

    <hdp:file-system id="fileSystem"
                     configuration-ref="hadoopConfiguration"
                     user="root"
    />

</beans>

测试文件

package com.bennyrhys.hadoop.spring;

import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

/**
 * @Author bennyrhys
 * @Date 1/21/21 2:35 PM
 */
public class SpringHadoopHDFSApp {
    private ApplicationContext ctx;
    // apache hadoop
    private FileSystem fileSystem;

    /**
     * 创建HDFS文件夹
     */
    @Test
    public void testMkdirs() throws Exception {
        fileSystem.mkdirs(new Path("/springhdfs"));
    }

    /**
     * 查看HDFS文件
     */
    @Test
    public void testText() throws Exception {
        FSDataInputStream in = fileSystem.open(new Path("/springhdfs/hello.txt"));
        IOUtils.copyBytes(in, System.out, 1024);
        in.close();
    }

    @Before
    public void setUp() {
        ctx = new ClassPathXmlApplicationContext("beans.xml");
        fileSystem = (FileSystem) ctx.getBean("fileSystem");
    }

    @After
    public void tearDown() throws Exception {
        ctx = null;
        fileSystem.close();
    }
}

spring hadoop 配置文件详解

提取变量

使用xml中的头文件替换bean,使其允许使用上下文 ${}导入变量

新建配置文件application.properties

spring.hadoop.fsUri=hdfs://hadoop01:9000

获取context上下文引入变量 beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:hdp="http://www.springframework.org/schema/hadoop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/hadoop http://www.springframework.org/schema/hadoop/spring-hadoop.xsd">

    <hdp:configuration id="hadoopConfiguration">
        fs.defaultFS=${spring.hadoop.fsUri}
        hadoop.tmp.dir=/tmp/hadoop
        electric=sea
    </hdp:configuration>
    <context:property-placeholder location="application.properties"/>

    <hdp:file-system id="fileSystem"
                     configuration-ref="hadoopConfiguration"
                     user="root"
    />

</beans>

SpringBoot访问HDFS系统

pom.xml

<!-- 添加spring boot的依赖操作hadoop -->
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-hadoop-boot</artifactId>
      <version>2.5.0.RELEASE</version>
    </dependency>

SpringBootHDFSApp

package com.bennyrhys.hadoop.spring;

import org.apache.hadoop.fs.FileStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.hadoop.fs.FsShell;

/**
 * @Author bennyrhys
 * @Date 1/21/21 11:33 PM
 */
@SpringBootApplication
public class SpringBootHDFSApp implements CommandLineRunner {

    @Autowired
    FsShell fsShell; //引入spring的

    @Override
    public void run(String... strings) throws Exception {
        for (FileStatus fileStatus : fsShell.lsr("/springhdfs")) {
            System.out.println("> " + fileStatus.getPath());
        }
    }

    /**
     * > hdfs://hadoop01:9000/springhdfs
     * > hdfs://hadoop01:9000/springhdfs/hello.txt
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(SpringBootHDFSApp.class, args);
    }
}
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_43469680复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Hadoop集成Spring的使用

    Spring Hadoop简化了Apache Hadoop,提供了一个统一的配置模型以及简单易用的API来使用HDFS、MapReduce、Pig以及Hive。...

    端碗吹水
  • 史上最快! 10小时大数据入门实战(八)- Hadoop 集成 Spring 的使用1 Spring Hadoop 开发环境搭建及访问 HDFS 文件系统

    JavaEdge
  • 【快速入门大数据】hadoop和它的hdfs、yarn、mapreduce

    技术架构挑战 量大,无法用结构化数据库,关系型数据库 经典数据库没有考虑数据多类别 比如json 实时性的技术挑战 网络架构、数据中心、运维挑战

    瑞新
  • Hadoop的数据仓库框架-Hive 基础知识及快速入门

    Hive是一个构建在Hadoop上的数据仓库框架。最初,Hive是由Facebook开发,后来移交由Apache软件基金会开发,并作为一个Apache开源项目。

    数据猿
  • 2021年大数据Hadoop(九):HDFS的高级使用命令

    安全模式是hadoop的一种保护机制,用于保证集群中的数据块的安全性。当集群启动的时候,会首先进入安全模式。当系统处于安全模式时会检查数据块的完整性。

    Lanson
  • 【数据分析】不使用Hadoop的五大理由

    作为Hadoop 曾经的超级粉丝,Joe Brightly承认自己在很多方面非常热爱Hadoop,比如“可以处理PB级别的数据;可以扩展到数千个...

    小莹莹
  • 13.12 Spring Boot集成Security中遇到的问题13.12 Spring Boot集成Security中遇到的问题问题1:Spring Boot集成Security使用数据库用户角色

    sql语法手误。1?这地方写错了,应该是?1。这在敲代码的时候,手速一旦稍有不慎,就会导致前后顺序颠倒,而导致输入错误。这个虽然说是“低级错误”,但是错误搞起来...

    一个会写诗的程序员
  • 2021年大数据Hadoop(八):HDFS的Shell命令行使用

    HDFS是存取数据的分布式文件系统,那么对HDFS的操作,就是文件系统的基本操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对HDF...

    Lanson
  • Hive快速入门系列(12) | Hive的数据压缩介绍及使用

    配置CentOS能连接外网。Linux虚拟机ping www.baidu.com 是畅通的 注意:采用root角色编译,减少文件夹权限出现问题

    不温卜火
  • 大数据hadoop入门之hadoop家族详解

    大数据这个词也许几年前你听着还会觉得陌生,但我相信你现在听到hadoop这个词的时候你应该都会觉得“熟悉”!越来越发现身边从事hadoop开发或者是正在学习ha...

    用户3392176
  • SpringBoot详细研究-02数据访问

    Springboot对数据访问部分提供了非常强大的集成,支持mysql,oracle等传统数据库的同时,也支持Redis,MongoDB等非关系型数据库,极大的...

    用户1216676
  • hadoop最新发行稳定版:DKHadoop版本选择详解

    Hadoop对于从事互联网工作的朋友来说已经非常熟悉了,相信在我们身边有很多人正在转行从事hadoop开发的工作,理所当然也会有很多hadoop入门新手。Had...

    用户3392176
  • 我是个Java开发者,我到底要不要学大数据开发?

    一入编程深似海,从此女神是路人。没办法,这行就这样。你不学Spring,总不是跑去学JVM/微服务架构/分布式去了,不断学习根本避免不了。所以关键在于把时间投在...

    程序猿DD
  • 0基础入门大数据开发学习的经典书籍推荐

    本书内容丰富,展示了如何使用Hadoop构建可靠、可伸缩的分布式系统,程序员可从中探索如何分析海量数据集,管理员可以了解如何建立与运行Hadoop集群。

    加米谷大数据
  • hadoop不同版本有哪些

    首次听到hadoop这次单词,相信很多人跟我当时是一样,不免心中画上一个大大的问号——这是什么东西?Hadoop是什么?百度百科的解释是:Hadoop是一个由A...

    IT小白龙
  • 摔到老三的 Java,未来在哪?

    大家好,我是鱼皮。之前看过国外一家公司(Eversoft)于去年 12 月的技术分享,提出了 2021 年 Java 的 5 个发展趋势,分享给大家~

    程序员鱼皮
  • spring boot 实践学习案例大全

    https://gitee.com/itcode-itcode/springboot-learning-example.git

    程序源代码

扫码关注腾讯云开发者

领取腾讯云代金券