精华内容
下载资源
问答
  • kettle使用Hadoop写入数据 ,第二次会把第一次写入的数据覆盖掉怎么解决,请各位大神指教谢谢

    kettle使用Hadoop写入数据 ,第二次会把第一次写入的数据覆盖掉怎么解决,请各位大神指教谢谢

    展开全文
  • 浅析hadoop写入数据api

    2014-01-07 15:35:06
    对于一般文件,都有满足随机读写的api。...hadoop对于写操作提供了一个类:FSDataOutputStream,这个类重载了很多write方法,用于写入很多类型的数据:比如字节数组,long,int,char等等。像FSDataInput
    对于一般文件,都有满足随机读写的api。而hadoop中的读api很简单用FSDataInputStream类就可以满足一般要求,而hadoop中的写操作却是和普通java操作不一样。

    hadoop对于写操作提供了一个类:FSDataOutputStream,这个类重载了很多write方法,用于写入很多类型的数据:比如字节数组,long,int,char等等。像FSDataInputStream一样,要获得FSDataOutputStream的实例,必须通过FileSystem该类来和HDFS建立连接,然后通过路径返回FSDataOutputStream实例。FileSystem返回FSDataOutputStream实例的方法有两组:

    • create(Path p)函数,创建一个空文件,然后可以向该文件顺序写入
    • append(Path p)函数,打开一个已有文件,并最做文件末尾追加数据

    以上两组函数都有多个重载版本,可以查阅手册。FSDataOutputStream不允许在文件中定位(而FSDataInputStream可以),这是因为hadoop只允许在一个已打开文件顺序写入或在文件尾追加数据,不允许在结尾之外其他文件写入数据。

    在使用append的操作时可能返回异常dfs.support.append未设置为true,只要才hdfs-site.xml中把该属性设置为true

    [html]  view plain copy print ?
    1. <property>  
    2.   <name>dfs.support.append</name>  
    3.   <value>false</value>  
    4.   <description>Does HDFS allow appends to files?  
    5.                This is currently set to false because there are bugs in the  
    6.                "append code" and is not supported in any prodction cluster.  
    7.   </description>  
    8. </property>  

    而且0.20的早起版本也不支持append操作,官方文档的建议是如果追加数据就重新create一个文件。使用的时候应该谨慎一点。


    当读取文件时若要返回文件的大小,用下列代码:

    [java]  view plain copy print ?
    1. FileStatus status=hdfs.getFileStatus(p);  
    2.             return status.getLen();  

    但是当对文件写入时,FileStatus的getLen函数返回的不是当前的大小,因为FSDataInputStream在写入数据时,数据会缓存,只有当写入的数据满64M(块大小)时或者关闭文件时,才会把数据写入到文件中去。连续写入数据时,为了实时获取当前文件大小,如果连续关闭打开文件势必会影响效率。可以这样解决:

    [java]  view plain copy print ?
    1. long result;  
    2. if(outFsData!=null){//FSDataInputStream对象实例  
    3. result=writeInitSize+outFsData.size()//文件打开时的长度  
    4. }  
    5. else{  
    6. FileStatus status=hdfs.getFileStatus(p);  
    7. result=status.getLen();//这个getLen()返回的是int型,最大也就是4G,要注意  
    8. }  
    9. return result;  

    FSDataInputStream该类的size函数就是返回的缓冲区写入的数据的大小。

    展开全文
  • 对于一般文件,都有满足随机读写的api。...Hadoop对于写操作提供了一个类:FSDataOutputStream,这个类重载了很多write方法,用于写入很多类型的数据:比如字节数组,long,int,char等等。像FSDataInputStre
    对于一般文件,都有满足随机读写的api。而hadoop中的读api很简单用FSDataInputStream类就可以满足一般要求,而hadoop中的写操作却是和普通java操作不一样。
    

    Hadoop对于写操作提供了一个类:FSDataOutputStream,这个类重载了很多write方法,用于写入很多类型的数据:比如字节数组,long,int,char等等。像FSDataInputStream一样,要获得FSDataOutputStream的实例,必须通过FileSystem该类来和HDFS建立连接,然后通过路径返回FSDataOutputStream实例。FileSystem返回FSDataOutputStream实例的方法有两组:
    1、create(Path p)函数,创建一个空文件,然后可以向该文件顺序写入
    2、append(Path p)函数,打开一个已有文件,并最做文件末尾追加数据
    以上两组函数都有多个重载版本,可以查阅手册。FSDataOutputStream不允许在文件中定位(而FSDataInputStream可以),这是因为hadoop只允许在一个已打开文件顺序写入或在文件尾追加数据,不允许在结尾之外其他文件写入数据。

    在使用append的操作时可能返回异常dfs.support.append未设置为true,只要才hdfs-site.xml中把该属性设置为true

    <property>  
      <name>dfs.support.append</name>  
      <value>false</value>  
      <description>Does HDFS allow appends to files?  
                   This is currently set to false because there are bugs in the  
                   "append code" and is not supported in any prodction cluster.  
      </description>  
    </property>  

    而且0.20的早起版本也不支持append操作,官方文档的建议是如果追加数据就重新create一个文件。使用的时候应该谨慎一点。


    当读取文件时若要返回文件的大小,用下列代码:

    FileStatus status=hdfs.getFileStatus(p);  
                return status.getLen(); 

    但是当对文件写入时,FileStatus的getLen函数返回的不是当前的大小,因为FSDataInputStream在写入数据时,数据会缓存,只有当写入的数据满64M(块大小)时或者关闭文件时,才会把数据写入到文件中去。连续写入数据时,为了实时获取当前文件大小,如果连续关闭打开文件势必会影响效率。可以这样解决:

    long result;  
    if(outFsData!=null){//FSDataInputStream对象实例  
    result=writeInitSize+outFsData.size()//文件打开时的长度  
    }  
    else{  
    FileStatus status=hdfs.getFileStatus(p);  
    result=status.getLen();//这个getLen()返回的是int型,最大也就是4G,要注意  
    }  
    return result; 
    

    FSDataOutputStream该类的size函数就是返回的缓冲区写入的数据的大小。

    参考:http://blog.csdn.net/qiuchenl/article/details/8617990


    展开全文
  • Hadoop-写入数据的几种方式

    千次阅读 2016-03-24 15:36:58
    create(新建) import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream;...import org.apache.hadoop.conf.Configurati

    create(新建)

    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URI;
    
    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.apache.hadoop.util.Progressable;
    
    public class FileCopyShowProgress {
    	
    	public static void main(String[] args) throws Exception{
    		String inPath="D:\\file1.txt";//本地路径
    		String outPath="hdfs://master:9000/input/file1.txt";//hdfs的路径
    		InputStream in =new BufferedInputStream(new FileInputStream(inPath));
    		Configuration conf=new Configuration();
                    //create在写入文件时会自动产生所有的父目录
    		FileSystem fs=FileSystem.get(URI.create(outPath),conf);
    		OutputStream out =fs.create(new Path(outPath),new Progressable() {
    			
    			@Override
    			public void progress() {
    				System.out.print(".");
    			}
    		});
    		IOUtils.copyBytes(in, out, 4096,true);
    	}
    	
    }

    FSDataOutputStream不允许定位,因为HDFS只允许对一个打开的文件顺序写入,或向一个已有文件添加(换句话说,不支持除尾部的其他位置的写入)。

    OutputStream out =fs.create(new Path(outPath),new Progressable() {
    //替换为
    FSDataOutputStream out =fs.create(new Path(outPath),new Progressable() {

    展开全文
  • Hadoop数据管理

    2021-03-02 02:37:38
    前面重点介绍了Hadoop及其体系结构和计算模型MapReduce,现在开始介绍Hadoop数据管理,主要包括Hadoop的分布式文件系统HDFS、分布式数据库HBase和数据仓库工具Hive的数据管理。HDFS是分布式计算的存储基石,Hadoop...
  • Hadoop 创建文件并写入数据

    千次阅读 2015-04-05 19:09:25
    import java.io.IOException;...import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; pu
  • hadoop原理学习——hdfs写入数据

    千次阅读 2018-04-11 17:19:41
    简单来讲,大型企业和政府都可能会包含有大量数据, (我们可以看做是一块巨大的豆腐)例如马路卡口监控视频拍摄的机动车号牌,我们如果要对如此海量的数据进行复杂的分析,还要非常快速的得到结果,如果使用一台...
  • hadoop文件写入

    2018-02-11 15:30:00
    由上图可知;写入文件分为三个角色,分别是clientnode namenode 和datanodecliennode本质为java虚拟机.namenode 和datanode则是Hadoop数据集群存储块第一步:create实际是客户端创建Distribute...
  • Hadoop数据

    千次阅读 2019-06-04 08:43:33
    HDFS的元数据包含三部分: 抽象目录树 数据和块映射关系 数据块的存储节点 元数据有两个存储位置: ...元数据的存储格式:data/hadoopdata/目录下有三个文件夹 data 数据的真实存储目录,即dat...
  • 功能描述:从文件中读取数据写入mysql. 问题:为什么程序执行map100%,combine100%,reduce0%.程序没有运行到reduce中 package b508.demo; import java.io.IOException; import java.io.DataInput; import java.io....
  • [Hadoop]数据复制DistCp

    千次阅读 2017-01-22 13:38:25
    1.需求我们项目中需要复制一个大文件,最开始使用的是hadoop cp命令,但是随着文件越来越大,拷贝的时间也水涨船高。下面进行hadoop cp与hadoop distcp拷贝时间上的一个对比。我们将11.9G的文件从data_group/adv/day...
  • hadoop数据迁移

    2019-06-06 12:59:56
    具体操作:使用distcp命令跨hdfs迁移数据(在hadoop版本不一致时,distcp命令也不一样) 使用详情参看官网:... (目标端hadoop需要赋予外来用户对文件夹写入的权...
  • Hadoop数据压缩、Yarn、企业优化

    万次阅读 2020-06-03 20:41:20
    Hadoop数据压缩、Yarn架构以及工作流程、Hadoop企业优化方案
  • 本节和大家继续学习一下有关Hadoop集群性能优化中机架感知配置方面的内容,主要包括写入数据和读出数据两大部分,希望通过本节的介绍大家对Hadoop集群中机架感知配置有一定的认识。 Hadoop集群功能测试 以下是分别...
  • Hadoop HDFS 数据

    万次阅读 2019-04-02 14:29:22
    HDFS 写数据流程 客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目 标文件是否已存在,父目录是否存在。 NameNode 返回是否可以上传。 客户端请求第一个 block 上传到哪几个 datanode...
  • 这时学习Hadoop以来写的第一个成功的程序,程序仿照《Hadoop实战》中的PutMerge程序,这里有几个要注意的地方: 1.hdfs的地址是一个网络地址,如下面的:hdfs://localhost:9000/test3 2.确保不会出现“权限...
  • hadoop通过FileSystem API读取和写入数据

    千次阅读 2013-05-27 15:28:19
    hadoop指南(有更好的源码),自己测试着写了一个小例子,在伪分布式上测试成功,对JAVA的一些API也不太了解,都是一个熟悉的过程吧。 这个例子主要可以熟悉一些API,以及理解各个类之间的调用和转化关系,...
  • Hadoop数据存储

    万次阅读 2016-05-24 22:49:24
    Hadoop数据存储Hadoop能高效处理数据的基础是有其数据存储模型做支撑,典型的是Hadoop的分布式文件系统HDFS和HBase。一、HDFS文件系统1.0、 HDFS简介HDFS是Hadoop的分布式文件系统的实现,它设计的目的是存储海量的...
  • ES-Hadoop是Elasticsearch推出的专门用于对接Hadoop生态的工具,可以让数据在Elasticsearch和Hadoop之间双向移动,无缝衔接Elasticsearch与Hadoop服务,充分使用Elasticsearch的快速搜索及Hadoop批处理能力,实现...
  • 基于Hadoop数据云盘的实现

    万次阅读 热门讨论 2018-11-28 17:24:42
    环境:centos6.6 Tomcat7.0 ...基于Hadoop hdfs的集群分布式系统做成的这个简单的云盘实现; 首先启动centos,打开安装好的eclipse,file--&gt;New--&gt;Dynamic Application Project 注:如果没有这...
  • hadoop迁移数据应用实例

    千次阅读 2018-01-04 21:33:48
    项目开发中hadoop一直装在虚拟机上,最近要迁移到服务器上。记录下迁移过程。 一、为虚拟机添加一块新的硬盘 虚拟机的初始硬盘只有30G,容不开要导出的数据。两种方式,一是给虚拟机扩容;二是为虚拟机添加一块新...
  •  Gobblin是一个通用的数据抽取框架,可以从一些数据源(数据库、FTP、文件、Kafka以及自定义的数据源)抽取海量数据Hadoop上。框架在同一个地方管理所有不同数据源的元数据,同时具备可扩展、容错、数据质量保证...
  • 1.hadoop fs -Ddfs.replication=1 -put file.txt /tmp/a.txt 这个速度很快. 因为一个副本是写本地硬盘的.硬盘排除了 2.网卡坏了 http://www.cnblogs.com/ggjucheng/archive/2012/04/17/2454590.html vmstat 1 ...
  • hadoop SequenceFile 写入例程注释

    千次阅读 2011-08-18 21:24:21
    import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; im
  • Hadoop HDFS 数据一致性

    千次阅读 2013-12-03 15:42:43
    HDFS 会对写入的所有数据计算校验和(checksum),并在读取数据时验证校验和。针对指定字节的数目计算校验和。字节数默认是512 字节,可以通过io.bytes.per.checksum属性设置。通过CRC-32编码后为4字节。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,444
精华内容 34,977
关键字:

hadoop写入数据