實現HDFS數據上傳和下載代碼
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import org.junit.Before; import org.junit.Test; /* 1、通過代碼來操作HDFS 2、實現了下載、上傳文件的功能 */ public class HDFSDemo { /* 1、通過代碼來操作HDFS 2、實現了下載功能 */ public static void main(String[] args) throws IOException, URISyntaxException { //與master建立聯系 FileSystem fs =FileSystem.get(new URI("hdfs://master:9000"), new Configuration()); //通過流方式讀取HDFS中的文件,將文件讀入到內存當中 InputStream in = fs.open(new Path("/user/guest/esri/xiaojson/xiao.json")); //輸出路徑 OutputStream out = new FileOutputStream("D://xiao.json"); //工具類將in中的內容copy到out中,大師級默認都是4096 IOUtils.copyBytes(in, out, 4096, true); } /* 1、通過代碼來操作HDFS 2、實現了下載功能,通過一句話實現下載 */ @Test public void testDownLoad() throws IllegalArgumentException, IOException{ fs.copyToLocalFile(new Path("/user/guest/esri/xiaojson/xiao.json"), new Path("D://xiao1.json")); } FileSystem fs = null; @Before public void init() throws IOException, URISyntaxException, InterruptedException{ //創建FileSystem的實現類 (工具類)與master建立聯系 fs =FileSystem.get(new URI("hdfs://master:9000"), new Configuration(),"guest"); } /* 1、通過代碼來操作HDFS 2、實現了上傳功能 */ @Test public void testUpload() throws IOException{ //讀取本地文件系統的文件,返回輸入流 InputStream in = new FileInputStream("D://xiao123.json"); //在HDFS上創建一個文件,返回輸出流 OutputStream out = fs.create(new Path("/test.jar")); //工具類將in中的內容copy到out中,大師級默認都是4096 IOUtils.copyBytes(in, out, 4096, true); } } </pre>
本文由用戶 ff6m 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!