您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java怎么實現HDFS文件上傳下載的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
1、pom.xml配置
<!--配置--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <hadoop.version>3.1.3</hadoop.version> </properties> <!--依賴庫--> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>${hadoop.version}</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>${hadoop.version}</version> </dependency> </dependencies>
2、創建與刪除
//導包 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.IOException; public static void main( String[] args ){ //初始化hadoop文件系統的configration對象 Configuration conf = new Configuration(); //將hadoop的configration信息傳入 conf.set("fs.defaultFS","hdfs://192.168.50.102:9000"); //初始化Hadoop文件系統的句柄 FileSystem fs=null; try { //配置Hadoop的文件句柄信息 fs=FileSystem.get(conf); //定義Hadoop的文件路徑 final String PATH="/test/kb16/hadoop/ratings.csv"; //初始化Hadoop的路徑信息 Path path = new Path(PATH); //如果文件路徑存在就刪除 if (fs.exists(path)) { System.out.println("DELETE "+fs.delete(path, true)); }else{ //如果文件路徑不存在就創建 System.out.println("CREATE "+fs.create(path)); } } catch (IOException e) { e.printStackTrace(); }finally { //結束的時候,句柄還沒有釋放就進行釋放 if (fs!=null) { try { fs.close() ; }catch (IOException e) { e.printStackTrace(); } } } }
3、文件上傳
//導包 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.File; import java.io.IOException; public static void main(String[] args) { //定義本地上傳文件路徑 final String formPath="E:\\ratings.csv"; //本地文件不存在就報錯,并強制讓程序終止 if (!new File(formPath).exists()) { System.out.println(formPath +"doesn't exits"); return; } //初始化hadoop文件系統的configration對象 Configuration conf = new Configuration(); //將hadoop的configration信息傳入 conf.set("fs.defaultFS","hdfs://192.168.50.102:9000"); //初始化Hadoop文件系統的句柄 FileSystem fs=null; try { //將config信息傳入 fs=FileSystem.get(conf); //定義上傳到HDFS的路徑 final String toPath="/test/kb16/hive"; //初始化路徑 Path to =new Path(toPath); //如果文件路徑存在不執行,如果文件路徑不存在就嘗試創建,如果創建失敗就跳過 if (!fs.exists(to)&& !fs.mkdirs(to)) { System.out.println(toPath +"doesn't exit and can't be created"); return; } //初始化上傳文件路徑 Path from=new Path(formPath); //利用方法將本地文件復制到HDFS中 fs.copyFromLocalFile(from, to); System.out.println("succeed in copying from "+formPath+" to "+toPath); } catch (IOException e) { e.printStackTrace(); System.out.println("FAILURE"); }finally{ //如果結束Hadoop文件系統句柄沒有關閉,利用方法進行句柄釋放 if (null!=fs) { try { fs.close(); } catch (IOException e) { e.printStackTrace(); } } } }
4、文件下載
//導包 import com.google.inject.internal.cglib.core.$LocalVariablesSorter; import com.google.inject.internal.cglib.proxy.$Factory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.File; import java.io.IOException; public class Download { public static void main(String[] args) { //定義文件下載路徑 final String toPath = "C:\\Users\\Jialin\\Desktop"; //獲取路徑 File to = new File(toPath); //如果路存在或者文件路徑不存在但是創建成功就不執行if方法 if (!to.exists()&&!to.mkdirs()) { System.err.println(toPath + "doesn't exist and can't be created"); return; } //初始化hadoop文件系統的configration對象 Configuration config = new Configuration(); //將hadoop的configration信息傳入 config.set("fs.defaultFS", "hdfs://192.168.50.102:9000"); //初始化Hadoop文件系統的句柄 FileSystem fs = null; try { //將config信息傳入 fs = FileSystem.get(config); //定義下載文件路徑 final String fromPath = "/test/kb16/hive/ratings.csv"; //獲取路徑信息 Path from = new Path(fromPath); //如果指定下載文件不存在就退出 if (!fs.exists(from)) { System.err.println(toPath + "doesn't exist "); return; } //獲取文件下載路徑信息 Path _to = new Path(toPath); //利用方法將Hadoop文件下載到本地 fs.copyToLocalFile(from,_to); System.out.println("succeed in downloading from "+fromPath+" to"+toPath); } catch (IOException e) { e.printStackTrace(); System.out.println("FAILURE"); } finally { //如果結束Hadoop文件系統句柄沒有關閉,利用方法進行句柄釋放 if (null != fs) try { fs.close(); } catch (IOException e) { e.printStackTrace(); } } } }
以上就是“Java怎么實現HDFS文件上傳下載”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。