美文网首页
Metastore格式和分隔符

Metastore格式和分隔符

作者: 此间少年仍犹在 | 来源:发表于2019-02-25 16:06 被阅读0次

 Hive目前支持的数据格式包括Text File、SequenceFile、RCFile、Avro、ORC 和Parquet,同时可以自定义INPUTFORMAT和OUTPUTFORMAT来支持其他格式。
https://cwiki.apache.org/confluence/display/Hive/FileFormats
 具体到某种数据格式,Hive是如何进行支持的呢?主要涉及INPUTFORMAT/OUTPUTFORMAT、SerDe分片(Split)和记录(Record)等概念。
 具体来说,分片被划分为若干个记录;每条记录就是一个键值对,对应一行。InputFormat将输入文件生成分片,并将分片分割成记录。SerDe是SerializerDeserializer的缩写。以Hive读取HDFS文件为例,会有以下处理:
1)调用InputFormat,将文件生成分片并分割成记录;
2)调用SerDe的Deserializer,将一行(Row),切分为各个字段。
 Hive向HDFS写入文件时,顺序相反。大体流程如下所示:
HDFS files --> InputFileFormat --> Deserializer --> Row object --> Serializer --> OutputFileFormat --> HDFS files

Hive读写记录
1、INPUTFORMAT/OUTPUTFORMAT

通常,Hive中的建表语句如下:

CREATE TABLE my_table(a string, b string, ...)
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
WITH SERDEPROPERTIES (
   "separatorChar" = "\t",
   "quoteChar"     = "'",
   "escapeChar"    = "\\"
)  
STORED AS TEXTFILE;
Hive数据表
 INPUTFORMAT/OUTPUTFORMAT对应创建表时的STORED AS语句,如果自定义编写的INPUTFORMAT/OUTPUTFORMAT,在创建表时可以写成STORED AS INPUTFORMAT '<packagepath.classname>' OUTPUTFORMAT '<packagepath.classname>' 的形式。
 Hive中支持的format参照https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-StorageFormats
2、SerDes

 官方wikihttps://cwiki.apache.org/confluence/display/Hive/SerDe
 TEXTFILE格式使用默认的SerDe,LazySimpleSerDe。
 Hive中支持的SerDe参照https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RowFormats&SerDe

 总结:Metastore对文件格式的支持基于以上概念和原理,如果有自定义格式的需求(以JSON为例),无论基于现有的开源方案,还是自定义编写,都是可以的。

相关文章

  • Metastore格式和分隔符

     Hive目前支持的数据格式包括Text File、SequenceFile、RCFile、Avro、ORC 和P...

  • MySQL之存储过程

    1、存储过程 1.1、格式: 注: ①DELIMITER//和DELIMITER;,DELIMITER是分隔符 ②...

  • HiveServer2、metaStore以及HiveThrif

    HiveServer2和metaStore hiveServer2和metaStore其实都是hive本身带的组件...

  • Hive Metastore部署方式

    Metastore 有三种部署方式 embedded mode (Metastore 和 db 都运行在 Hive...

  • hive的列分隔符和行分隔符的使用

    hive中在创建表时,一般会根据导入的数据格式来指定字段分隔符和列分隔符。一般导入的文本数据字段分隔符多为逗号分隔...

  • Metastore源码分析

    本文基于hive-1.2.2源码Metastore模块在metastore目录下 入口文件 metastore/s...

  • iOS 时间格式化符总结

    各种时间字符说明(:)时间分隔符。在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔...

  • IOS-时间的格式化

    1.字符说明(:)时间分隔符。在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔小时...

  • 格式化输出字符串

    1. 新建一类(CustomStringFormatter),在h文件中添加方法: /** 按指定格式和分隔符号输...

  • hive文件存储格式和分隔符

    hive会为每个database创建对应的文件夹,表会在这个文件里面创建对应的子目录。表中的数据会以目录中的文件的...

网友评论

      本文标题:Metastore格式和分隔符

      本文链接:https://www.haomeiwen.com/subject/ichgyqtx.html