导航:首页 > 编程语言 > java上传文件hadoop

java上传文件hadoop

发布时间:2022-07-12 16:30:31

1. 如何用java程序把本地文件拷贝到hdfs上并显示进度

把程序打成jar包放到Linux上

转到目录下执行命令 hadoop jar maprecer.jar /home/clq/export/java/count.jar hdfs://ubuntu:9000/out06/count/

上面一个是本地文件,一个是上传hdfs位置

成功后出现:打印出来,你所要打印的字符。

package com.clq.hdfs;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;

public class FileCopyWithProgress {
//********************************
//把本地的一个文件拷贝到hdfs上
//********************************
public static void main(String[] args) throws IOException {
String localSrc = args[0];
String dst = args[1];
InputStream in = new BufferedInputStream(new FileInputStream(localSrc));
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(dst), conf);
FSDataOutputStream out = fs.create(new Path(dst), new Progressable() {
@Override
public void progress() {
System.out.print(".");
}
});
IOUtils.Bytes(in, out, conf, true);
}

}
可能出现异常:

Exception in thread "main" org.apache.hadoop.ipc.RemoteException: java.io.IOException: Cannot create /out06; already exists as a directory

at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:1569)

at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:1527)

at org.apache.hadoop.hdfs.server.namenode.NameNode.create(NameNode.java:710)

at org.apache.hadoop.hdfs.server.namenode.NameNode.create(NameNode.java:689)

at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:587)

at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1432)

at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1428)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:415)

说明你这个路径在hdfs上已经存在,换一个即可。

2. 利用JAVA+API向HDFS文件系统上的文件写入数据一共有哪三种方法,请叙述该三种

摘要 一.构建环境

3. java开发中什么样的项目会用到Hadoop

java项目一般是不会用到hadoop的,除非涉及到处理大数据方面的业务。hadoop是用java实现的。主要原因如下:
1. java比较适合做大型复杂系统
2. Doug Cutting本身从事java方面的研究,主要是lucence,开源检索架构说来也是这样的。
3. java开源,活跃程度最高,这样搞出来放在apache上有利于交流、改进
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapRece。HDFS为海量的数据提供了存储,则MapRece为海量的数据提供了计算。

4. 关于用java写程序把本地文件上传到HDFS中的问题

将这FileSystem hdfs = FileSystem.get(config);
改成FileSystem hdfs = FileSystem.get(URI.create("hdfs://master:9000"),config)
上面那句取得的是本地文件系统对象,改成下面这个才是取得hdfs文件系统对象,当你要操作本地文件对象的时候就要用上面那句取得本地文件对象,我在2.7.4刚开始也是跟你一样的错误,改为下面的就可以了

5. 刚学习spark,想上传文件给hdfs,是不是需要hadoop然后java编程这样是用eclip

spark会把hdfs当做一个数据源来处理, 所以数据存储都要做, 之后编程是从Hadoop改成spark就可以了. 是否用eclipse无所谓, 只要能编译运行就可以

阅读全文

与java上传文件hadoop相关的资料

热点内容
国产单片机厂商 浏览:56
苹果手机怎么设置不更新app软件 浏览:283
转行当程序员如何 浏览:491
苹果id怎么验证app 浏览:863
查看手机命令 浏览:952
抖音反编译地址 浏览:224
如何加密软件oppoa5 浏览:232
java从入门到精通明日科技 浏览:93
拆解汽车解压视频 浏览:595
新版百度云解压缩 浏览:591
android上下拉刷新 浏览:878
centos可执行文件反编译 浏览:836
林清玄pdf 浏览:270
黑马程序员java基础 浏览:283
awss3命令 浏览:358
百度店铺客户订单手机加密 浏览:501
钉钉班群文件夹怎么上传文件 浏览:749
人社app怎么解绑手机 浏览:101
caj文件夹打不开 浏览:475
什么app可以将电量变色 浏览:692