通过JAVA对HDFS进行操作管理插件
建立連接,導(dǎo)包
如果不用maven,解壓hadoop安裝包,share==>hadoop==>common==>lib ?里面的全部復(fù)制粘貼過去, share==>hadoop==>hdfs==>lib ?里面的全部復(fù)制粘貼過去。
如果用maven,在maven repository中搜索hadoop,找到common,找到對應(yīng)版本
?
復(fù)制到pom.xml中
?
再導(dǎo)入hadoop Client
?
第一步建立連接,連接namenode
之前通過linux對hdfs配置時,在core-site.xml中,配置
?
連接的是namenode。
現(xiàn)在用myeclipse,書寫運(yùn)行文件,先對文件進(jìn)行讀操作:
HDFSClient.java
?
package com.neuedu.test;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path;public class HFDSClient {public static void main(String[] args) {// TODO Auto-generated method stub read();}public static void read(){//-------連接namenode://1、創(chuàng)建一個配置對象(與配置文件是一個原理)Configuration conf=new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.71.141:9000");//set配置對象Path path=new Path("/hadoop/abc.txt");//讀文件//FileSystem fs=new //發(fā)現(xiàn)方法不能用,因?yàn)樗鼮槌橄蠓椒?#xff0c;在不能用情況下,創(chuàng)建對象時方法很陌生且不能用,調(diào)用一下靜態(tài)方法,看哪個可以返回try {FileSystem fs=FileSystem.get(conf);//只用來連接namenode//因?yàn)槭亲x文件,需要返回一個輸入流FSDataInputStream input = fs.open(path);//f 為一個路徑,告訴它文件在哪 //返回了一個流//讀文字可以轉(zhuǎn)化為字符流,轉(zhuǎn)換:InputStreamReader isr=new InputStreamReader(input);//如果想按行讀,BufferedReader br=new BufferedReader(isr);//開始讀String str=br.readLine();//按行讀while(str!=null){//只要不為空 System.out.println(str);str=br.readLine();//每輸出一行,讀一次 }br.close();isr.close();input.close();//流都需要關(guān)閉} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}} }?
之后運(yùn)行,結(jié)果:
?
查看文件是否正確:
現(xiàn)在對文件進(jìn)行寫操作,分為追加和直接寫入
追加方法:
public static void append(){Configuration conf=new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.71.141:9000");//set配置對象try {FileSystem fs=FileSystem.get(conf);FSDataOutputStream outpustream = fs.append(new Path("/hadoop/abc.txt"));//在哪個文件上追加outpustream.writeBytes("123123123");outpustream.close();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}之后再讀一下,看看是否寫成功:
直接寫入的形式:
//寫入:直接寫入public static void write(){Configuration conf=new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.71.141:9000");//set配置對象try {FileSystem fs=FileSystem.get(conf);FSDataOutputStream outpustream = fs.create(new Path("/hadoop/abc.txt"));//在哪個文件上追加outpustream.writeBytes("123123123");outpustream.close();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}通過read()查看結(jié)果:
?
因?yàn)閬砘厍袚Q函數(shù)查看文件內(nèi)容很不方便,在此進(jìn)行配置DFS Location,方便對hdfs進(jìn)行管理:
?
先將復(fù)制到myeclipse根目錄的plugins中,
重啟myeclipse重啟之后,點(diǎn)擊windows==>show view==>other==>會多出一個視圖
雙擊此視圖,右擊新建,
出現(xiàn)視圖,能夠顯示hdfs中的文件目錄,查看文件內(nèi)容
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/610553824lyx/p/9307769.html
總結(jié)
以上是生活随笔為你收集整理的通过JAVA对HDFS进行操作管理插件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: c++stl应用入门
- 下一篇: PX4地面站QGroundControl
