IDEA項目遠程調試hadoop入門(maven項目)

来源:http://www.cnblogs.com/zh-yp/archive/2017/11/23/7884084.html
-Advertisement-
Play Games

1、創建項目:File-->new-->Project; 2、選擇maven,SDK選擇自己的Java安裝路徑; 3、這個隨意了,寫個比較有意義的就行,然後就按照圖片操作。 4、上圖點擊finish後,出現下麵的pom.xml,這個就是後續需要mvn依賴的地方。 5、我的hadoop版本是:CDH的 ...


1、創建項目:File-->new-->Project;

2、選擇maven,SDK選擇自己的Java安裝路徑;

3、這個隨意了,寫個比較有意義的就行,然後就按照圖片操作。

4、上圖點擊finish後,出現下麵的pom.xml,這個就是後續需要mvn依賴的地方。

5、我的hadoop版本是:CDH的2.6.0-cdh5.5.0,所以在mvn下對應的版本,將內容複製出來粘貼進pom.xml;

這個需要特別註意,不同的版本這個也是不同的;

 6、點擊出現的import,下圖是點擊前後點擊後lib中差異,如果導入成功的話就如下圖第二個。

 7、最後將hadoop集群中core-site.xml配置文件複製到項目的resource下;

 

8、最後建包,建類;

 

9、最後,上代碼;

  1 package hdfs;
  2 
  3 import org.apache.commons.lang.StringUtils;
  4 import org.apache.hadoop.conf.Configuration;
  5 import org.apache.hadoop.fs.FileSystem;
  6 import org.apache.hadoop.fs.Path;
  7 import org.apache.hadoop.io.IOUtils;
  8 
  9 import java.io.*;
 10 import java.net.URI;
 11 
 12 public class up2hdfs {
 13 
 14 
 15     private static String HDFSUri = "hdfs://IP+:+埠號";
 16 
 17     /**
 18      * 1、獲取文件系統
 19      *
 20      * @retrun FileSystem 文件系統
 21      */
 22 
 23     public static FileSystem getFileSystem(){
 24 
 25         //讀取配置文件
 26         Configuration conf = new Configuration();
 27 
 28         //文件系統
 29         FileSystem fs = null;
 30         String hdfsUri = HDFSUri;
 31         if (StringUtils.isBlank(hdfsUri)){
 32             //返回預設文件系統,如果在hadoop集群下運行,使用此種方法可直接獲取預設文件系統;
 33             try{
 34                 fs = FileSystem.get(conf);
 35             }catch(IOException e){
 36                 e.printStackTrace();
 37             }
 38         }else{
 39             //返回指定的文件系統,如果在本地測試,需要此種方法獲取文件系統;
 40             try{
 41                 URI uri = new URI(hdfsUri.trim());
 42                 fs = FileSystem.get(uri,conf);
 43             } catch (Exception e) {
 44                 e.printStackTrace();
 45             }
 46         }
 47         return fs ;
 48     }
 49 
 50 
 51     /**
 52      * 2、創建文件目錄
 53      * @param path 文件路徑
 54      */
 55     public static void mkdir(String path){
 56 
 57         try {
 58             FileSystem fs = getFileSystem();
 59             System.out.println("FilePath"+path);
 60             //創建目錄
 61             fs.mkdirs(new Path(path));
 62             //釋放資源
 63             fs.close();
 64         } catch (IOException e) {
 65             e.printStackTrace();
 66         }
 67     }
 68 
 69     /**
 70      * 3、判斷目錄是否存在
 71      *
 72      * @param filePath 目錄路徑
 73      * @param create 若不存在是否創建
 74      *
 75      */
 76     public static boolean existDir(String filePath,boolean create){
 77 
 78         boolean flag = false;
 79 
 80         if (StringUtils.isNotEmpty(filePath)){
 81             return flag;
 82         }
 83 
 84         try{
 85             Path path = new Path(filePath);
 86             //FileSystem對象
 87             FileSystem fs = getFileSystem();
 88             if (create){
 89                 if (!fs.exists(path)){
 90                     fs.mkdirs(path);
 91                 }
 92             }
 93 
 94             if (fs.isDirectory(path)){
 95                 flag = true;
 96             }
 97 
 98         }catch (Exception e){
 99             e.printStackTrace();
100 
101         }
102 
103         return flag;
104 
105     }
106 
107     /**
108      * 4、本地文件上傳至HDFS
109      *
110      * @param srcFile 源文件路徑
111      * @param destPath 目的文件路徑
112      */
113 
114     public static void copyFileToHDFS(String srcFile,String destPath) throws Exception{
115 
116         FileInputStream fis = new FileInputStream(new File(srcFile));//讀取本地文件
117         Configuration config = new Configuration();
118         FileSystem fs = FileSystem.get(URI.create(HDFSUri+destPath),config);
119         OutputStream os = fs.create(new Path(destPath));
120         //cpoy
121         IOUtils.copyBytes(fis,os,4096,true);
122 
123         System.out.println("copy 完成 ......");
124         fs.close();
125     }
126 
127     /**
128      * 5、從HDFS下載文件到本地
129      *
130      * @param srcFile 源文件路徑
131      * @param destPath 目的文件路徑
132      *
133      */
134     public static void getFile(String srcFile,String destPath)throws Exception{
135 
136         //HDFS文件地址
137         String file = HDFSUri+srcFile;
138         Configuration config = new Configuration();
139         //構建filesystem
140         FileSystem fs = FileSystem.get(URI.create(file),config);
141         //讀取文件
142         InputStream is = fs.open(new Path(file));
143         IOUtils.copyBytes(is,new FileOutputStream(new File(destPath)),2048,true);
144         System.out.println("下載完成......");
145         fs.close();
146     }
147 
148     /**
149      * 6、刪除文件或者文件目錄
150      *
151      * @param path
152      */
153     public static void rmdir(String path){
154 
155         try {
156             //返回FileSystem對象
157             FileSystem fs = getFileSystem();
158 
159             String hdfsUri = HDFSUri;
160             if (StringUtils.isNotBlank(hdfsUri)){
161 
162                 path = hdfsUri+path;
163             }
164             System.out.println("path"+path);
165             //刪除文件或者文件目錄 delete(Path f)此方法已經棄用
166             System.out.println(fs.delete(new Path(path),true));
167 
168             fs.close();
169         } catch (Exception e) {
170             e.printStackTrace();
171         }
172 
173     }
174 
175     /**
176      * 7、讀取文件的內容
177      *
178      * @param filePath
179      * @throws IOException
180      */
181     public static void readFile(String filePath)throws IOException{
182 
183         Configuration config = new Configuration();
184         String file = HDFSUri+filePath;
185         FileSystem fs = FileSystem.get(URI.create(file),config);
186         //讀取文件
187         InputStream is =fs.open(new Path(file));
188         //讀取文件
189         IOUtils.copyBytes(is, System.out, 2048, false); //複製到標準輸出流
190         fs.close();
191     }
192 
193 
194     /**
195      * 主方法測試
196      */
197     public static void main(String[] args) throws Exception {200         //連接fs
201         FileSystem fs = getFileSystem();
202         System.out.println(fs.getUsed());
203         //創建路徑
204         mkdir("/dit2");
205         //驗證是否存在
206         System.out.println(existDir("/dit2",false));
207         //上傳文件到HDFS
208         copyFileToHDFS("G:\\testFile\\HDFSTest.txt","/dit/HDFSTest.txt");
209         //下載文件到本地
210         getFile("/dit/HDFSTest.txt","G:\\HDFSTest.txt");
211         // getFile(HDFSFile,localFile);
212         //刪除文件
213         rmdir("/dit2");
214         //讀取文件
215         readFile("/dit/HDFSTest.txt");
216     }
217 
218 }

 以上代碼,來自網路,忘記出處,如有侵權,立即刪!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.索引無法存儲null值 a.單列索引無法儲null值,複合索引無法儲全為null的值。 b.查詢時,採用is null條件時,不能利用到索引,只能全表掃描。 為什麼索引列無法存儲Null值? a.索引是有序的。NULL值進入索引時,無法確定其應該放在哪裡。(將索引列值進行建樹,其中必然涉及到諸多 ...
  • 下載安裝包或者壓縮包 添加db存儲和日誌存儲文件夾 添加服務、配置環境變數、啟動Mongo 本例:安裝路徑:D:Program Files/MongoDB 配置文件的路徑:D:MongoDB 一、安裝,可選自定義安裝路徑 二、建立配置文件 logs文件夾內建立mongodb.log;etc文件夾內建 ...
  • 本文出處:http://www.cnblogs.com/wy123/p/7884986.html 周圍又有人在討論UNION和UNION ALL,對於UNION和UNION ALL,網上說的最多的就是性能問題(實在不想說出來這句話:UNION ALL比UNION快)其實根本不想炒UNION和UNIO ...
  • 一、mysqldump 1.備份test庫 2.備份 -B參數 3.備份 --compact 去除那些多餘的字元 4.mysql恢復 5.mysqldump的壓縮 gzip 6.mysqldump的壓縮恢復 gunzip 7.mysqldump只備份表結構 -d 8.mysqldump只備份表數據( ...
  • 這個系列大致想跟大家分享以下篇章(我會持續更新的↖(^ω^)↗): 1、mongo 3.4分片集群系列之一:淺談分片集群 2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3、mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全 4、mongo 3.4分片集群系列之 ...
  • 直接上例子,即SQL語法: DECLARE @Text NVARCHAR(MAX) = N'192 168-0 101 34--96' WHILE (CHARINDEX('--',@Text) <> 0) SET @Text = REPLACE(@Text,'--','-') SELECT @Tex ...
  • HiveServer2是經常與beeline一起使用,可以用jdbc客戶端遠程連接,一般用於生產環境。 在提供傳統客服端的功能之外,還提供其他功能。 Beeline連接 啟動命令:HiveServer2 啟動日誌在hive.log中查看 命令: Beeline !connect jdbc:hive2 ...
  • 有朋友需求一個問題,就是處理一張表中某一欄位,從這個欄位中去截取內容中最後一個中文詞語。 ID SourceText Result 1 張達:U:1楊英蘋:U:1,周忱:U:1,;苗橋:U:1,章瑋:U:1,; 2 gaoying,高穎:U; 3 gaoying,高穎:U; 4 mq,苗橋;ding ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...