Hive orc 格式 + snappy 压缩是比较常用的存储加压缩格式。

今天处理下面的场景时,解决了一些问题,记录下来:

flume消费kafka的数据实时写入hdfs,通过创建分区表,t + 1 时,需要看到昨天的数据:

   flume 通过snappy 将数据写入hdfs,可以通过在fliume.conf中配置以下

  1. 保证每天的数据写入同一个目录中:

    agent.sinks.hdfs_sink.hdfs.path = /user/hive/warehouse/ods.db/kafka_2_hdfs_test/ods_sale_alter/dt=%Y-%m-%d 
  2. 避免在hdfs写入过多的小文件:
    tier1.sinks.hdfs_sink.hdfs.idleTimeout=

    这个参数是某个topic停止活动时间超过设置的值时,就把hdfs上文件结尾的.tmp去掉,并开始写入新文件。设置为0,表示忽略停止时间。

  3. 配置了2的参数后,会造成一个问题,当新的一天,数据开始写入hdfs上另一个目录后,
    比如"dt=2019-03-02","dt=2019-03-01"文件夹下的最后一个文件,还是以.tmp结尾的,在hive建表后,数据格式错误会报错。
    所以需要我们通过脚本,每天修复文件名称:
    hadoop -mv abc.tmp abc
  4. 另外就是hive建表的问题:
    当数据导入hdfs后,我们想针对flume倒过来的数据,建立snappy压缩,orc格式的hive表。 
    建表语句如下:
    DROP TABLE IF EXISTS test_orc_snappy;
    CREATE EXTERNAL TABLE test_orc_snappy (
    x_json string
    )
    PARTITIONED BY (`dt` string)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY "\t"
    STORED AS orc
    LOCATION '/user/hive/warehouse/ods.db/kafka_2_hdfs_test/test_orc_snappy'
    TBLPROPERTIES ("orc.compress"="SNAPPY");

    然而,我忽略了一件很重要的事,文件虽然用了snappy压缩,但是没有转化为orc格式。
    假如我们还想继续使用orc格式,那就只能把这张表当做底层表,在上层表比如 dw 层,中通过insert into的方式,
    转为orc格式的表。

  5. 那么这里可以使用的建表语句是什么呢?
    CREATE EXTERNAL TABLE test_snappy (
    x_json string
    )
    PARTITIONED BY (`dt` string)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY "\t"
    STORED AS textfile
    LOCATION '/user/hive/warehouse/ods.db/kafka_2_hdfs_test/ods_sale_alter'
    TBLPROPERTIES ("orc.compress"="SNAPPY")

    使用textFile就可以了。

Hive ORC + SNAPPY的更多相关文章

  1. 大数据:Hive - ORC 文件存储格式

    一.ORC File文件结构 ORC的全称是(Optimized Row Columnar),ORC文件格式是一种Hadoop生态圈中的列式存储格式,它的产生早在2013年初,最初产生自Apache ...

  2. Hive - ORC 文件存储格式【转】

    一.ORC File文件结构 ORC的全称是(Optimized Row Columnar),ORC文件格式是一种Hadoop生态圈中的列式存储格式,它的产生早在2013年初,最初产生自Apache ...

  3. Sqoop-将MySQL数据导入到hive orc表

    sqoop创建并导入数据到hive orc表 sqoop import \ --connect jdbc:mysql://localhost:3306/spider \ --username root ...

  4. Hive:ORC File Format存储格式详解

    一.定义 ORC File,它的全名是Optimized Row Columnar (ORC) file,其实就是对RCFile做了一些优化. 据官方文档介绍,这种文件格式可以提供一种高效的方法来存储 ...

  5. hive orc压缩数据异常java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcSerde$OrcSerdeRow

    hive表在创建时候指定存储格式 STORED AS ORC tblproperties ('orc.compress'='SNAPPY'); 当insert数据到表时抛出异常 Caused by: ...

  6. hive orc update

    hive-site.xml --><configuration> <!-- WARNING!!! This file is auto generated for documen ...

  7. Hive ORC表的使用

    创建普通临时表: create table if not exists test_orc_tmp(   name string,   gender string,   cnt BIGINT )row ...

  8. Hive存储格式之ORC File详解,什么是ORC File

    目录 概述 文件存储结构 Stripe Index Data Row Data Stripe Footer 两个补充名词 Row Group Stream File Footer 条纹信息 列统计 元 ...

  9. Hive Streaming 追加 ORC 文件

    1.概述 在存储业务数据的时候,随着业务的增长,Hive 表存储在 HDFS 的上的数据会随时间的增加而增加,而以 Text 文本格式存储在 HDFS 上,所消耗的容量资源巨大.那么,我们需要有一种方 ...

随机推荐

  1. linux基础编程:IO模型:阻塞/非阻塞/IO复用 同步/异步 Select/Epoll/AIO(转载)

      IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作.那么我们对与外部设备的操作都可以看做对文件进行操作.我们对一个文件的读写,都通过调用内核提供的系统调用:内核给我们返回一个file ...

  2. iOS.Book.Mac OS X and iOS Internals: To the Apple’s Core

    深入解析Mac OS X & iOS操作系统 http://product.china-pub.com/3769686

  3. UOJ 67 新年的毒瘤 - Tarjan

    Description 给出一个无向图, 要求找出某个点$u$, 去掉$u$和$u$所连的边, 所剩下的节点构成一棵树. Solution 首先, 割点肯定是不可能满足条件的, 因为去掉割点后会构成若 ...

  4. UI设计:C4D作品案例分享

    中文名4D电影,外文名CINEMA 4D,研发公司为德国Maxon Computer,特点为极高的运算速度和强大的渲染插件,使用在电影<毁灭战士>.<阿凡达>中,获得贸易展中最 ...

  5. struts2升级

    http://www.blogjava.net/ldwblog/archive/2013/10/14/404944.html

  6. 用php脚本比较MySQL两个数据库的结构差异

    define('DATABASE1', 'mysql://root:password@127.0.0.1/db1'); $dbi1 = new DbMysql; $dbi1->dbh = DAT ...

  7. mysql 5.7 linux环境下解压安装

    在CentOS linux环境安装mysql 一般rpm(或者yum),预编译和源码安装. 如果采用rpm或者yum安装,mysql的数据文件一般存放在/var/lib/mysql目录下,也就是会把d ...

  8. vue2.0 移动端,下拉刷新,上拉加载更多插件 转:

    转自:http://www.cnblogs.com/gmajip/p/7204072.html <template lang="html"> <div class ...

  9. web-Amazon

    一 准备实验数据 1.1.下载数据 wget http://snap.stanford.edu/data/amazon/all.txt.gz 1.2.数据分析 1.2.1.数据格式 product/p ...

  10. windows下误修改了环境变量path怎么办

    1.在我的电脑图标中右键属性调出系统属性窗口2.在系统属性窗口中找到高级选择卡3.在高级选项卡中找到环境变量按扭并单击打开4.在弹出的环境变量窗口中,在系统变量(S)下的框框中找到并单击选择Path变 ...