1、導入代碼文件
pom.xml文件中加入以下內容
org.apache.hadoop hadoop-common 2.6.5 org.apache.hadoop hadoop-hdfs 2.6.5
java中操作HDFS
1、公共區域
FileSystem fs; @Before public void init() throws IOException, URISyntaxException{ String path="hdfs://ha1:9000"; fs=FileSystem.get(new URI(path), new Configuration()); }
2、創建目錄
/** * 創建目錄 * @throws IllegalArgumentException * @throws IOException */ @Test public void mkdir() throws IllegalArgumentException, IOException{ fs.mkdirs(new Path("/test4")); fs.close(); }
注意事項:new Path中的/是必須要寫的,可以同時創建多級目錄 /keduox/aaa/bbb/ccc
3、刪除目錄與刪除文件一致
/** * 刪除文件 * @throws IllegalArgumentException * @throws IOException */ @Test public void deleteDir() throws IllegalArgumentException, IOException{ fs.delete(new Path("/test4"),true); fs.close(); } #### ==注意事項:/同樣不能少,delete 默認為true,false時只能刪除空的文件夾==
4、創建文件
/** * 創建一個文件 * @throws IllegalArgumentException * @throws IOException */ @Test public void createFile() throws IllegalArgumentException, IOException{ fs.createNewFile(new Path("/test.txt")); fs.close(); }
5、下載文件到本地
fs.copyToLocalFile(true,new Path("/test.txt"),new Path("d:/")); fs.close();
注意事項:第一個true表示是“剪切”操作,沒有或者false表示復制
6、上傳文件到HDFS
@Test public void uploadFile() throws IllegalArgumentException, IOException{ fs.copyFromLocalFile(new Path("d:/test223/tttbb"), new Path("/test2.txt")); fs.close(); }
7、將下載的文件傳為流
@Test public void fileToIo() throws IllegalArgumentException, IOException{ FSDataInputStream inputStream= fs.open(new Path("/jdk-8u111-linux-x64.tar.gz") ); IOUtils.copyBytes(inputStream,System.out,4096,false); }