首页 > 其他分享 >每日总结11.14

每日总结11.14

时间:2023-11-14 19:56:04浏览次数:32  
标签:总结 fs String 11.14 hadoop org apache import 每日

(二)编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,

要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。

首先启动hdfs集群

然后创建maven项目

MyFSDataInputStream类:

package DataTutorial.Second;

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.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class ShowTheContent extends FSDataInputStream{
    public ShowTheContent(InputStream in) {
        super(in);
    }

    /**
     * 实现按行读取 每次读入一个字符,遇到"\n"结束,返回一行内容
     */
    public static String readline(BufferedReader br) throws IOException {
        char[] data = new char[1024];
        int read = -1;
        int off = 0;

        while ((read = br.read(data, off, 1)) != -1) {
            if (String.valueOf(data[off]).equals("\n")) {
                off += 1;
                break;
            }
            off += 1;
        }
        if (off > 0) {
            return String.valueOf(data, 0, off);
        } else {
            return null;
        }
    }

    /**
     * 读取文件内容
     */
    public static void cat(Configuration conf, String remoteFilePath) throws IOException {
        FileSystem fs = FileSystem.get(conf);
        Path remotePath = new Path(remoteFilePath);

        try (FSDataInputStream in = fs.open(remotePath);
             BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
            String line;
            while ((line = ShowTheContent.readline(br)) != null) {
                System.out.println(line);
            }
        }
    }

    /**
     * 主函数
     */
    public static void main(String[] args) {
        Configuration conf = new Configuration();
        conf.setLong("ipc.maximum.data.length", 67108864); // 设置为合适的值
        conf.set("fs.default.name", "hdfs://192.168.88.101:8020");
        String remoteFilePath = "/test/test2.txt"; // HDFS 路径

        try {
            ShowTheContent.cat(conf, remoteFilePath);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

(三)查看Java帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出HDFS中指定文件的文本到终端中。

package DataTutorial.Third;

import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import java.io.*;
import java.net.URL;

public class HDFSApi {
    static {
        URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
    }

    /**
     * 主函数
     */
    public static void main(String[] args) throws Exception {

        String remoteFilePath = "hdfs://192.168.88.101:8020/test/test2.txt"; // HDFS 文件
        InputStream in = null;
        try {
            /* 通过 URL 对象打开数据流,从中读取数据 */
            in = new URL(remoteFilePath).openStream();
            IOUtils.copyBytes(in, System.out, 4096, false);
        } finally {
            IOUtils.closeStream(in);
        }
    }
}

  

标签:总结,fs,String,11.14,hadoop,org,apache,import,每日
From: https://www.cnblogs.com/-GYP/p/17832400.html

相关文章

  • 11.14
    先记个好玩的ex丁真语录DZ:hcz我觉得你说的很对hcz:我说啥了DZ:我不知道,但我就是觉得你说的很对喜欢我们丁真的意识流吗上午放假的时候让同学整了个洛谷号,今天他们滏阳的奥赛课刚好和他聊聊,发现我们303班真是太厉害了,不管在什么方面都碾压同行在奥赛方面:我们虽然训练的时......
  • 【每日例题】蓝桥杯 c++ 被替换的身份证
    被替换的身份证题目蓝桥杯被替换的身份证思路分析斗地主简化版?!废话少说,四种情况ShallowDream一开始出对子或者王炸,ShallowDream胜ShallowDream一开始出单,Joker出王炸,Joker胜ShallowDream一开始出单,Joker手中最大的牌比ShallowDream手中的牌都大,Joker胜ShallowDream一开......
  • Spring Cloud Gateway实现鉴权认证流程总结(一)
    认证、授权、凭证1.1认证(Authentication)认证表示你是谁。系统如何正确分辨出操作用户的真实身份,比如通过输入用户名和密码来辨别身份。1.2授权(Authorization)授权表示你能干什么。系统如何控制一个用户能看到哪些数据和操作哪些功能,也就是具有哪些权限。1.3凭证(Credential)表示你......
  • Spring Cloud Gateway实现鉴权认证流程总结(二)
    微服务认证方案微服务认证方案目前有很多种,每个企业也是大不相同,但是总体分为两类,如下:网关只负责转发请求,认证鉴权交给每个微服务商控制统一在网关层面认证鉴权,微服务只负责业务你们公司目前用的是哪种方案?先来说说第一种方案,有着很大的弊端,如下:代码耦合严重,每个微服务都要......
  • Spring Cloud 入门总结
    首先我给大家看一张图,如果大家对这张图有些地方不太理解的话,我希望你们看完我这篇文章会恍然大悟。总体架构什么是Springcloud构建分布式系统不需要复杂和容易出错。SpringCloud为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、......
  • 知识点复习-每日一读
    1.编译:编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为编译(Compile)。(C程序->二进制)2.链接:链接(Link)其实就是一个“打包”的过程,它将所有二进制形式的目标文件和系统组件组合成一个可执行文件,编译只是将我们自己写的代码......
  • 11.14每日总结
    今天完成了大型数据库的实验二,在第(二)问的时候出现了问题:出现的问题:在做(二)开始使用eclipse去进行编译,但是建的是普通项目,出现了如下错误:    解决方案(列出遇到的问题和解决办法,列出没有解决的问题):对上述问题呢一直在解决,我本人心里还是想用eclipse完成,但是......
  • springboot 3 知识点总结
    一、springboot相关1.类中添加@RestController、方法中添加@GetMapping注解可实现web的路由和数据返回;这两个注解不是springboot的是注解,是springMVC的注解2.在controller的方法中的参数中添加@RequestPara(value="name",defaultValue="word")可以实现浏览器get参数的接收......
  • GEE ——errors & debuggings (2023GEE峰会总结)
    简介:在gee中有三种错误,一种就是系统错误,也就是我们看到的会在JavaScriptcodeeditor中出现的错误,也就是在程序还没有启动之前就会提示的错误,而客户端错误则主要是会提示一些在代码过程中的错误,比如说没出现过的变量名称,另外就是服务器出席那的错误,也就是说,你的代码和你索要运行的......
  • 11月6日总结
    无论是实际的项目中,还是在我们学习的过程中,都会重点的应用到Dictionary<TKey,TValue>这个存储类型。每次对Dictionary<TKey,TValue>的添加都包含一个值和与其关联的键,使用键检索值的速度非常快,接近O(1),因为Dictionary<TKey,TValue>类是作为哈希表实现的。首先我们来从一......