精华内容
下载资源
问答
  • Hive文件格式

    2016-06-20 20:39:44
    Hive文件格式

    本文转载自:http://www.cnblogs.com/Richardzhu/p/3613661.html

    hive文件存储格式包括以下几类:

    1、TEXTFILE

    2、SEQUENCEFILE

    3、RCFILE

    4、ORCFILE(0.11以后出现)

    其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理;

    SEQUENCEFILE,RCFILE,ORCFILE格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中, 然后再从表中用insert导入SequenceFile,RCFile,ORCFile表中。

    前提创建环境:

    hive 0.8

    创建一张testfile_table表,格式为textfile。

    create table if not exists testfile_table( site string, url  string, pv   bigint, label string) row format delimited fields terminated by '\t' stored as textfile;

    load data local inpath '/app/weibo.txt' overwrite into table textfile_table;

    一、TEXTFILE
    默认格式,数据不做压缩,磁盘开销大,数据解析开销大。
    可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,
    从而无法对数据进行并行操作。
    示例:


    1. create table if not exists textfile_table(  
    2. site string,  
    3. url  string,  
    4. pv   bigint,  
    5. label string)  
    6. row format delimited  
    7. fields terminated by '\t'  
    8. stored as textfile;  

    插入数据操作


    1. set hive.exec.compress.output=true;    
    2. set mapred.output.compress=true;    
    3. set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;    
    4. set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;    
    5. insert overwrite table textfile_table select * from textfile_table;    


    二、SEQUENCEFILE
    SequenceFile是Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。
    SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩。
    示例:


    1. create table if not exists seqfile_table(  
    2. site string,  
    3. url  string,  
    4. pv   bigint,  
    5. label string)  
    6. row format delimited  
    7. fields terminated by '\t'  
    8. stored as sequencefile;  

    插入数据操作:

    1. set hive.exec.compress.output=true;    
    2. set mapred.output.compress=true;    
    3. set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;    
    4. set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;    
    5. SET mapred.output.compression.type=BLOCK;  
    6. insert overwrite table seqfile_table select * from textfile_table;    


    三、RCFILE
    RCFILE是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。
    RCFILE文件示例:

    1. create table if not exists rcfile_table(  
    2. site string,  
    3. url  string,  
    4. pv   bigint,  
    5. label string)  
    6. row format delimited  
    7. fields terminated by '\t'  
    8. stored as rcfile;  

    插入数据操作:

    1. set hive.exec.compress.output=true;    
    2. set mapred.output.compress=true;    
    3. set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;    
    4. set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;    
    5. insert overwrite table rcfile_table select * from textfile_table;  


    四、ORCFILE()
    五、再看TEXTFILE、SEQUENCEFILE、RCFILE三种文件的存储情况:


    1. [hadoop@node3 ~]$ hadoop dfs -dus /user/hive/warehouse/*  
    2. hdfs://node1:19000/user/hive/warehouse/hbase_table_1    0  
    3. hdfs://node1:19000/user/hive/warehouse/hbase_table_2    0  
    4. hdfs://node1:19000/user/hive/warehouse/orcfile_table    0  
    5. hdfs://node1:19000/user/hive/warehouse/rcfile_table    102638073  
    6. hdfs://node1:19000/user/hive/warehouse/seqfile_table   112497695  
    7. hdfs://node1:19000/user/hive/warehouse/testfile_table  536799616  
    8. hdfs://node1:19000/user/hive/warehouse/textfile_table  107308067  
    9. [hadoop@node3 ~]$ hadoop dfs -ls /user/hive/warehouse/*/  
    10. -rw-r--r--   2 hadoop supergroup   51328177 2014-03-20 00:42 /user/hive/warehouse/rcfile_table/000000_0  
    11. -rw-r--r--   2 hadoop supergroup   51309896 2014-03-20 00:43 /user/hive/warehouse/rcfile_table/000001_0  
    12. -rw-r--r--   2 hadoop supergroup   56263711 2014-03-20 01:20 /user/hive/warehouse/seqfile_table/000000_0  
    13. -rw-r--r--   2 hadoop supergroup   56233984 2014-03-20 01:21 /user/hive/warehouse/seqfile_table/000001_0  
    14. -rw-r--r--   2 hadoop supergroup  536799616 2014-03-19 23:15 /user/hive/warehouse/testfile_table/weibo.txt  
    15. -rw-r--r--   2 hadoop supergroup   53659758 2014-03-19 23:24 /user/hive/warehouse/textfile_table/000000_0.gz  
    16. -rw-r--r--   2 hadoop supergroup   53648309 2014-03-19 23:26 /user/hive/warehouse/textfile_table/000001_1.gz  


    总结:
    相比TEXTFILE和SEQUENCEFILE,RCFILE由于列式存储方式,数据加载时性能消耗较大,但是具有较好的压缩比和查询响应。数据仓库的特点是一次写入、多次读取,因此,整体来看,RCFILE相比其余两种格式具有较明显的优势。

    展开全文
  • hive文件格式

    2018-08-12 21:26:02
    hive文件存储格式包括以下几类: 1、TEXTFILE 2、SEQUENCEFILE 3、RCFILE 4、ORCFILE(0.11以后出现) 其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理...

    hive文件存储格式包括以下几类:

    1、TEXTFILE

    2、SEQUENCEFILE

    3、RCFILE

    4、ORCFILE(0.11以后出现)

    其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理;

    SEQUENCEFILE,RCFILE,ORCFILE格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中, 然后再从表中用insert导入SequenceFile,RCFile,ORCFile表中。

    前提创建环境:

    hive 0.8

    创建一张testfile_table表,格式为textfile。

    create table if not exists testfile_table( site string, url string, pv bigint, label string) row format delimited fields terminated by ‘\t’ stored as textfile;

    load data local inpath ‘/app/weibo.txt’ overwrite into table textfile_table;

    一、TEXTFILE
    默认格式,数据不做压缩,磁盘开销大,数据解析开销大。
    可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,
    从而无法对数据进行并行操作。
    示例:

    复制代码
    create table if not exists textfile_table(
    site string,
    url string,
    pv bigint,
    label string)
    row format delimited
    fields terminated by ‘\t’
    stored as textfile;
    插入数据操作:
    set hive.exec.compress.output=true;
    set mapred.output.compress=true;
    set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
    set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;
    insert overwrite table textfile_table select * from textfile_table;
    复制代码
    二、SEQUENCEFILE
    SequenceFile是Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。
    SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩。
    示例:

    复制代码
    create table if not exists seqfile_table(
    site string,
    url string,
    pv bigint,
    label string)
    row format delimited
    fields terminated by ‘\t’
    stored as sequencefile;
    插入数据操作:
    set hive.exec.compress.output=true;
    set mapred.output.compress=true;
    set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
    set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;
    SET mapred.output.compression.type=BLOCK;
    insert overwrite table seqfile_table select * from textfile_table;
    复制代码
    三、RCFILE
    RCFILE是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。
    RCFILE文件示例:

    复制代码
    create table if not exists rcfile_table(
    site string,
    url string,
    pv bigint,
    label string)
    row format delimited
    fields terminated by ‘\t’
    stored as rcfile;
    插入数据操作:
    set hive.exec.compress.output=true;
    set mapred.output.compress=true;
    set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
    set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;
    insert overwrite table rcfile_table select * from textfile_table;
    复制代码
    四、ORCFILE()
    五、再看TEXTFILE、SEQUENCEFILE、RCFILE三种文件的存储情况:

    复制代码
    [hadoop@node3 ~]hadoopdfsdus/user/hive/warehouse/hdfs://node1:19000/user/hive/warehouse/hbasetable10hdfs://node1:19000/user/hive/warehouse/hbasetable20hdfs://node1:19000/user/hive/warehouse/orcfiletable0hdfs://node1:19000/user/hive/warehouse/rcfiletable102638073hdfs://node1:19000/user/hive/warehouse/seqfiletable112497695hdfs://node1:19000/user/hive/warehouse/testfiletable536799616hdfs://node1:19000/user/hive/warehouse/textfiletable107308067[hadoop@node3 ] hadoop dfs -ls /user/hive/warehouse/*/
    -rw-r–r– 2 hadoop supergroup 51328177 2014-03-20 00:42 /user/hive/warehouse/rcfile_table/000000_0
    -rw-r–r– 2 hadoop supergroup 51309896 2014-03-20 00:43 /user/hive/warehouse/rcfile_table/000001_0
    -rw-r–r– 2 hadoop supergroup 56263711 2014-03-20 01:20 /user/hive/warehouse/seqfile_table/000000_0
    -rw-r–r– 2 hadoop supergroup 56233984 2014-03-20 01:21 /user/hive/warehouse/seqfile_table/000001_0
    -rw-r–r– 2 hadoop supergroup 536799616 2014-03-19 23:15 /user/hive/warehouse/testfile_table/weibo.txt
    -rw-r–r– 2 hadoop supergroup 53659758 2014-03-19 23:24 /user/hive/warehouse/textfile_table/000000_0.gz
    -rw-r–r– 2 hadoop supergroup 53648309 2014-03-19 23:26 /user/hive/warehouse/textfile_table/000001_1.gz
    复制代码
    总结:
    相比TEXTFILE和SEQUENCEFILE,RCFILE由于列式存储方式,数据加载时性能消耗较大,但是具有较好的压缩比和查询响应。数据仓库的特点是一次写入、多次读取,因此,整体来看,RCFILE相比其余两种格式具有较明显的优势。

    展开全文
  • Hive 文件格式

    2018-07-18 11:17:00
    hive文件存储格式包括以下几类: 1、TEXTFILE 2、SEQUENCEFILE 3、RCFILE 4、ORCFILE(0.11以后出现) 其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理...

    hive文件存储格式包括以下几类:

    1、TEXTFILE

    2、SEQUENCEFILE

    3、RCFILE

    4、ORCFILE(0.11以后出现)

    其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理;

    SEQUENCEFILE,RCFILE,ORCFILE格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中, 然后再从表中用insert导入SequenceFile,RCFile,ORCFile表中。

    前提创建环境:

    hive 0.8

    创建一张testfile_table表,格式为textfile。

    create table if not exists testfile_table( site string, url  string, pv   bigint, label string) row format delimited fields terminated by '\t' stored as textfile;

    load data local inpath '/app/weibo.txt' overwrite into table textfile_table;

     

    一、TEXTFILE
    默认格式,数据不做压缩,磁盘开销大,数据解析开销大。
    可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,
    从而无法对数据进行并行操作。
    示例

    create table if not exists textfile_table(
    site string,
    url  string,
    pv   bigint,
    label string)
    row format delimited
    fields terminated by '\t'
    stored as textfile;
    插入数据操作:
    set hive.exec.compress.output=true;  
    set mapred.output.compress=true;  
    set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;  
    set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;  
    insert overwrite table textfile_table select * from textfile_table;
    

     

    特点:

    textfile为默认格式
    存储方式:行存储
    磁盘开销大 数据解析开销大
    压缩的text文件 hive无法进行合并和拆分

     

    二、SEQUENCEFILE
    SequenceFile是Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。
    SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩。
    示例:

    create table if not exists seqfile_table(
    site string,
    url  string,
    pv   bigint,
    label string)
    row format delimited
    fields terminated by '\t'
    stored as sequencefile;
    插入数据操作:
    set hive.exec.compress.output=true;  
    set mapred.output.compress=true;  
    set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;  
    set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;  
    SET mapred.output.compression.type=BLOCK;
    insert overwrite table seqfile_table select * from textfile_table;

    SequenceFile

    SequenceFile是Hadoop API 提供的一种二进制文件,它将数据以<key,value>的形式序列化到文件中。这种二进制文件内部使用Hadoop 的标准的Writable 接口实现序列化和反序列化。它与Hadoop API中的MapFile 是互相兼容的。Hive 中的SequenceFile 继承自Hadoop API 的SequenceFile,不过它的key为空,使用value 存放实际的值, 这样是为了避免MR 在运行map 阶段的排序过程。
     
    特点:
    二进制文件,以<key,value>的形式序列化到文件中
    存储方式:行存储
    可分割 压缩
    一般选择block压缩
    优势是文件和Hadoop api中的mapfile是相互兼容的。
     
     
    三、RCFILE
    RCFILE是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。
    RCFILE文件示例:
     
    create table if not exists rcfile_table(
    site string,
    url  string,
    pv   bigint,
    label string)
    row format delimited
    fields terminated by '\t'
    stored as rcfile;
    插入数据操作:
    set hive.exec.compress.output=true;  
    set mapred.output.compress=true;  
    set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;  
    set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;  
    insert overwrite table rcfile_table select * from textfile_table;
    

      

    RCFile
      RCFile是Hive推出的一种专门面向列的数据格式。 它遵循“先按列划分,再垂直划分”的设计理念。当查询过程中,针对它并不关心的列时,它会在IO上跳过这些列。需要说明的是,RCFile在map阶段从 远端拷贝仍然是拷贝整个数据块,并且拷贝到本地目录后RCFile并不是真正直接跳过不需要的列,并跳到需要读取的列, 而是通过扫描每一个row group的头部定义来实现的,但是在整个HDFS Block 级别的头部并没有定义每个列从哪个row group起始到哪个row group结束。所以在读取所有列的情况下,RCFile的性能反而没有SequenceFile高。
     
    特点:
    存储方式:数据按行分块 每块按照列存储
    压缩快 快速列存取
    读记录尽量涉及到的block最少
    读取需要的列只需要读取每个row group 的头部定义。
    读取全量数据的操作 性能可能比sequencefile没有明显的优势
     
     
    总结:
    相比TEXTFILE和SEQUENCEFILE,RCFILE由于列式存储方式,数据加载时性能消耗较大,但是具有较好的压缩比和查询响应。数据仓库的特点是一次写入、多次读取,因此,整体来看,RCFILE相比其余两种格式具有较明显的优势。
     
    -------------------------------------------
     
    四、ORCFile
    ORC(OptimizedRC File)存储源自于RC(RecordColumnar File)这种存储格式,RC是一种列式存储引擎,对schema演化(修改schema需要重新生成数据)支持较差,而ORC是对RC改进,但它仍对schema演化支持较差,主要是在压缩编码,查询性能方面做了优化。RC/ORC最初是在Hive中得到使用,最后发展势头不错,独立成一个单独的项目。Hive 1.x版本对事务和update操作的支持,便是基于ORC实现的(其他存储格式暂不支持)。ORC发展到今天,已经具备一些非常高级的feature,比如支持update操作,支持ACID,支持struct,array复杂类型。你可以使用复杂类型构建一个类似于parquet的嵌套式数据架构,但当层数非常多时,写起来非常麻烦和复杂,而parquet提供的schema表达方式更容易表示出多级嵌套的数据类型。

    存储方式:数据按行分块 每块按照列存储

    压缩快 快速列存取

    效率比rcfile高,是rcfile的改良版本

     

    参考:https://www.cnblogs.com/Richardzhu/p/3613661.html

     

    转载于:https://www.cnblogs.com/Allen-rg/p/9328133.html

    展开全文
  • Hive文件格式 TEXTFILE 默认格式,数据不进行任何压缩 存储方式:行存储 磁盘开销大,数据解析开销大 Hive不会对其进行切分,无法对数据进行并行操作 SEQUENCEFILE 二进制文件,以<key,value>形式序列...

    Hive文件格式

    • TEXTFILE

      • 默认格式,数据不进行任何压缩
      • 存储方式:行存储
      • 磁盘开销大,数据解析开销大
      • Hive不会对其进行切分,无法对数据进行并行操作
    • SEQUENCEFILE

      • 二进制文件,以<key,value>形式序列化到文件中
      • 存储方式:行存储
      • 可分割、可压缩。支持三种压缩方式:NONE,RECORD,BLOCK。Record压缩率低,一般选择block压缩。
      • 文件和Hadoop API中的mapfile相互兼容
    • RCFILE

      • 存储方式:按行分块,每块按照列存储。保证同一个record在一个块上,避免读一个record需要读取多个block。其次,块数据列存储,有利于数据压缩和快速列存取
      • 压缩快,快速列存取
      • 读记录尽量控制block最少
      • 读取指定的列只需读取每个row group的头部定义
      • 读取全量数据时,性能可能对SEQUANCEFILE性能差
    • ORCFILE

      • 存储方式:按行分块,每块按照列存储
      • 压缩快,快速列存储
      • 效率比RC高,可以理解为RC的改进版
    • PARQUET

      • 类似于ORC
      • 通用性比ORC强,Hadoop生态系统中大部分工程都支持该文件格式

    Hive数据导出

    • 本地文件导入到Hive表,需提前创建表
    load data local inpath 
    "/tmp/user/data/demo_local.parquet" 
    into table db_tmp.demo_local;
    
    • HDFS文件导入到Hive表,需提前创建表
    load data inpath 
    "/tmp/user/data/demo_hdfs.parquet" 
    into table db_tmp.demo_hdfs;
    
    • Hive表导入到Hive表
    insert into table demo_hive 
    select * from demo_hive_b;
    
    • 创建表时从其他Hive表导入
    create table demo_a 
    as select * from demo_hive_b;
    
    • 通过sqoop将mysql库导入到Hive表
    -- 默认导入到default库
    sqoop import --connect 
    jdbc:mysql://10.168.225.1:3306/casedb  
    --username root 
    --password password 
    --table demo --hive-import 
    --create-hive-table -m 1
    
    -- 指定导入的数据库
    sqoop import --connect 
    jdbc:mysql://10.168.225.1:3306/casedb  
    --username root 
    --password root --table demo 
    --hive-import --create-hive-table 
    --hive-table database.demo -m 1
    
    

    Hive数据导入

    • 导出到本地
    insert overwrite local directory 
    "/home/hadoop/data/" 
    row format dilimited 
    fields terminated by "," 
    select * from demo_hive_b;
    
    • 导出到HDFS
    insert overwrite  directory 
    "/home/hadoop/data/" 
    row format dilimited 
    fields terminated by "," 
    select * from demo_hive_b;
    
    • Hive命令行导出
    # Linux bash终端
    # 重定向方式
    hive -e "select * from demo_hive_b" >> 
    /home/hadoop/data/demo_output.txt
    
    # sql文件方式
    echo "select * from demo_hive_b" > 
    /home/hadoop/data/demo_output.sql
    hive -f /home/hadoop/data/demo_output.sql >> 
    /home/hadoop/data/demo_output.txt
    
    -------更多精彩,可关注微信公众号:"data爱好者"------- ## 标题
    展开全文
  • 大数据之hive文件格式(三)一、hive文件存储格式分类:1. 列式存储和行式存储(1)行式存储(2)列式存储2. textfile3. sequencefile4. rcfile5. orcfile6. Hive ROW FORMAT三、hive写入数据的方式1. 从本地文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,366
精华内容 946
关键字:

hive文件格式