zoukankan      html  css  js  c++  java
  • Hive 自定义数据格式

    前面在讲述创建表的语句时,省略了一些内容,更加完整的语法如下

    CREATE TABLE t1(...) STORED AS TEXTFILE;

    最后的STORED AS 子句,指的是Hive数据文件的存储格式,这里使用的是TEXTFILE,还有 SEQUENCEFILE RCFile,一共三种。

    TEXTFILE是最普通的文件存储格式,内容是可以直接查看。

    SEQUCENFILE是包含键值对的二进制的文件存储格式,支持压缩,可以节省存储空间。是hadoop领域的标准文件格式,但是在hadoop之外却无法使用。

    RCFile是列式存储文件格式,适合压缩处理。对于有成百上千字段的表而言,RCFile更加合适。

    我们知道,Hive的数据是存储在HDFS中。那么,以上三种文件存储格式,肯定有对应的InputFormat和OutputFormat来对应。

    TEXTFILE对应的是org.apache.hadoop.mapred.TextInputFormat和org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat。

    SEQUENCEFILE对应的是org.apache.hadoop.mapred.SequenceFileInputFormat和org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat。

    RCFILE对应的是org.apache.hadoop.hive.ql.io.RCFileInputFormat和org.apache.hadoop.hive.ql.io.RCFileOutputFormat。

    意味着,以上三种格式是对InputFormat和OutputFormat类的简写方式。

    比如上面例子中的语句,我们可以用一下方式改写

    CREATE TABLE t1(...) STORED AS INPUTFORMAT ‘org.apache.hadoop.mapred.TextInputFormat’ OUTPUTFORMAT ‘org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat’ 

    自定义输入格式,实现select * fromdual:

    上面讲的是数据存储格式。那么,对于HDFS数据文件中的记录,Hive是如何转换为字段的哪?这就是SerDe。一个SerDe包含了将一条记录的非结构化字节转化为Hive可以使用的一条记录的过程。

    使用子句ROW FORMAT SERDE ‘....’可以指定具体语句。

    关注公众号 海量干货等你
  • 相关阅读:
    开发者说:愿为你点亮“懂环境知冷暖”智能的灯
    云图说 | 通过Helm模板快速部署中间件应用
    int指令03 零基础入门学习汇编语言66
    C++语言与OO思想介绍 C++快速入门01
    C++语言与OO思想介绍 C++快速入门01
    端口01 零基础入门学习汇编语言67
    端口02 零基础入门学习汇编语言68
    int指令03 零基础入门学习汇编语言66
    端口02 零基础入门学习汇编语言68
    PE格式详细讲解5 系统篇05|解密系列
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734268.html
Copyright © 2011-2022 走看看