微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

05 HDFS Java API应用实例

一、在Ubuntu系统中安装和配置idea

去官网地址下载 https://www.jetbrains.com/idea/download/#section=linux

 

 

选择这个版本下载

把Idea放到你想要方的位置,如:

sudo cp ideaIU-2021.2.3.tar.gz /usr/local/

解压

sudo tar -zxvf ideaIU-2021.2.3.tar.gz idea2021

 

赋权限

sudo chmod 777 idea2021 -R

 

去到自己的idea安装目录下面启动idea

注意: idea是一门付费软件,笔者不方便提供永久使用的方法,大家可以自己去找激活码来使用 (有付费能力的当我没说哈)

./idea2021/bin/idea.sh

 

 

二、利用hadoop 的java api,向HDFS写一个文件

 像创建一个文件夹用于存放idea创建的项目,这是个人习惯,也可以不创建

sudo mkdir /usr/local/workspace

修改权限

sudo chmod 777 /usr/local/workspace -R

创建项目

 

 

 

 

创建项目成功后,在项目里面创建一个类WriteFile,代码如下

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 WriteFile {
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 = "201906110074李志恒".getBytes(); // 要写入的内容
String filename = "file1.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();
}
}
}

启动hdfs

cd /usr/local/hadoop

start-dfs.sh

hdfs dfs -ls

启动完hdfs之后回到idea运行ReadFile这个类

再次查看

hdfs dfs -ls

三、从HDFS读取一个文件内容

同样在idea创建一个类ReadFile,代码如下(注意代码中的文件路径需要和你WriteFile里面定义的文件路径一样):

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 ReadFile {
                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("file1.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();
                        }
                }
        }

运行这个类, 结果如下

可以看到输出内容为WriteFile中写入的内容

最后停止hdfs

stop-dfs.sh

到此,本次实验结束

sudo chmod 755 -R idea-IU-181.5540.7/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐