zoukankan      html  css  js  c++  java
  • Hive之序列化与反序列化(SerDe)

    序列化与反序列化的作用

    1,序列化是对象转化为字节序列的过程;

    2,反序列化是字节码恢复为对象的过程;

    序列化的作用主要有两个:

    (1),对象向的持久化;即把对象转换成字节码后保存文件;

    (2),对象数据的传输;

    反序列化的主要作用:

    对<key,value>反序列化成Hive table的每一列的值;Hive可以方便的将数据加载到表中而不需要对数据进行转换,这样在海量数据处理时,可以节省大量的时间。

      在Hive的HQL语句中,select时将会用到序列化操作, insert 时会用到反序列化操作,下面是具体的操作过程。

    SerDe使用

    Hive创建表时,通过定义的SerDe或使用Hive内置的SerDe类型指定数据的序列化和反序列化方式。

    CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
    [(col_name data_type [COMMENT col_comment], ...)]
    [COMMENT table_comment]
    [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
    [CLUSTERED BY (col_name, col_name, ...)
    [SORTED BY (col_name [ASC|DESC], ...)]
    INTO num_buckets BUCKETS]
    [ROW FORMAT row_format]
    [STORED AS file_format]
    [LOCATION hdfs_path]

    如上创建表语句, 使用row format 参数说明SerDe的类型。

    SerDe包括内置类型

    Avro
    ORC
    RegEx
    Thrift
    Parquet
    CSV
    JsonSerDe

    Eg..
    CREATE
    EXTERNAL TABLE IF NOT EXISTS teacher ( id BIGINT, name STRING, age INT) ROW FORMAT SERDE 'com.coder4.hive.MySerDe' STORED AS TEXTFILE LOCATION '/usr/hive/text/'
    参考:https://www.jianshu.com/p/9c43f03b97e7
    https://cwiki.apache.org/confluence/display/Hive/DeveloperGuide#DeveloperGuide-HiveSerDe
  • 相关阅读:
    Understand 学习
    2021年1月
    查看所有请求
    DB2日期和时间函数汇总
    .getClass和.class
    继承和实现接口的区别
    java8 stream
    Lambda表达式详解
    SQL语句小知识---XML文件中的 CDATA语法
    Java--mapper.xml中常用SQL标签
  • 原文地址:https://www.cnblogs.com/rrttp/p/9024153.html
Copyright © 2011-2022 走看看