大数据Hadoop学习记录(2)----基于Java语言的HDFS文件数据载入(判断文件是否存在、写入文本文件、上传本次文件到HDFS、读取HDFS文件内容)


这里的操作是在Ubuntu16+Hadoop 2.7.x版本下进行

一、Linux文本文件创建

在这里插入图片描述

二、在Eclipse中配置Hadoop

参考http://dblab.xmu.edu.cn/blog/290-2/

三、编写java程序判定文件是否存在

进入Hadoop环境

cd /usr/local/hadoop

启动Hadoop

./sbin/start-dfs.sh

查看是否启动成功

jps

编写java程序判断文件是否存在

 import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    public class HDFSFileIfExist {
        public static void main(String[] args){
            try{
            	String fileName = "test";
                Configuration conf = new Configuration();
                conf.set("fs.defaultFS", "hdfs://localhost:9000");
                conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
                FileSystem fs = FileSystem.get(conf);
                if(fs.exists(new Path(fileName))){
                    System.out.println("文件存在");
                }else{
                    System.out.println("文件不存在");
                }
     
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

注意这里要判断的文件名是test,因为在文件夹中还没有这个文件,所以程序运行的结果肯定是判断文件不存在的,如下图:
在这里插入图片描述
将String filename=”test”修改为String fileName = "/user/hadoop/input/first,first.txt是之前创建好的文件,是肯定存在的,如下图:

在这里插入图片描述

四、编写java程序将Linux本地文件到HDFS文件系统并部署该程序

这里要用到一开始我们创建的myHdfsFile.txt文件,下面编写程序:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class TextFileToHdfs {
	public static void main(String[] args) {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://localhost:9000");
        conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
        String localDir = "/home/zhangjian/下载/myHdfsFile.txt";//本地路径
        String hdfsDir = "/user/hadoop/input/";//HDFS文件路径
        try{
            Path localPath = new Path(localDir);
            Path hdfsPath = new Path(hdfsDir);
            FileSystem hdfs = FileSystem.get(conf);
            hdfs.copyFromLocalFile(localPath,hdfsPath);
            System.out.println("上传成功");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

运行结果
在这里插入图片描述
查看本地文件是否上传成功

./bin/hdfs dfs -ls /user/hadoop/input

在这里插入图片描述
查看文件内容

 ./bin/hdfs dfs -cat /user/hadoop/input/myHdfsFile.txt

在这里插入图片描述

五、编写java程序将文本写入HDFS文件

编写代码:

import org.apache.hadoop.conf.Configuration;  
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.Path;
public class InputFileToHdfs {
	public static void main(String[] args) { 
		try {
                Configuration conf = new Configuration();  
                conf.set("fs.defaultFS","hdfs://localhost:9000");
                conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
                FileSystem fs = FileSystem.get(conf);
                byte[] buff = "my name is zhangjian".getBytes(); // 要写入的内容
                String filename = "/user/hadoop/input/first.txt"; //要写入的文件名
                FSDataOutputStream os = fs.create(new Path(filename));
                os.write(buff,0,buff.length);
                System.out.println("Create:"+ filename);
                os.close();
                fs.close();
        } catch (Exception e) {  
                e.printStackTrace();  
        }  
   }  
}

运行结果:
在这里插入图片描述
查看的first.txt文件

./bin/hdfs dfs -cat /user/hadoop/input/first.txt

在这里插入图片描述

六、编写java程序读取HDFS文本文件内容

编写代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FSDataInputStream;
public class ReadTextFromHdfs {
	public static void main(String[] args) {
        try {
                Configuration conf = new Configuration();
                conf.set("fs.defaultFS","hdfs://localhost:9000");                      
				conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
                FileSystem fs = FileSystem.get(conf);
                Path file = new Path("/user/hadoop/input/first.txt"); 
                FSDataInputStream getIt = fs.open(file);
                BufferedReader d = new BufferedReader(new InputStreamReader(getIt));
                String content = d.readLine(); //读取文件一行
                System.out.println(content);
                d.close(); //关闭文件
                fs.close(); //关闭hdfs
        } catch (Exception e) {
                e.printStackTrace();
        }
    }
}

这里读取的文件是first.txt文件里的内容
运行结果:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值