沉沙
2018-09-27
来源 :
阅读 1910
评论 0
摘要:本篇教程探讨了大数据技术 IDEA项目远程调试hadoop入门,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。
本篇教程探讨了大数据技术 IDEA项目远程调试hadoop入门,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。
<
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 }
本文由职坐标整理发布,学习更多的大数据技术相关知识,请关注职坐标大技术云计算大技术技术频道!
喜欢 | 0
不喜欢 | 1
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号