<p id="hc59b"><label id="hc59b"><xmp id="hc59b"></xmp></label></p><tr id="hc59b"><label id="hc59b"></label></tr>
      <p id="hc59b"></p>

    1. <table id="hc59b"><ruby id="hc59b"></ruby></table>
      <acronym id="hc59b"><strong id="hc59b"><xmp id="hc59b"></xmp></strong></acronym>

      教育行業A股IPO第一股(股票代碼 003032)

      全國咨詢/投訴熱線:400-618-4000

      Serde是什么?Hive中的Serde和預定義表屬性

      更新時間:2022年11月08日11時17分 來源:傳智教育 瀏覽次數:

      Serde是Serializer and Deserializer(序列化和反序列化)的簡稱,Hive 通過Serde處理Hive數據表中每一行數據的讀取和寫入,例如查詢Hive數據表數據時,HDFS中存放的數據表數據會通過Serializer序列化為字節流便于數據傳輸;向Hive數據表插入數據時,會通過Deserializer將數據反序列化成Hive數據表的每一行值,方便將數據加載到數據表中,不需要對數據進行轉換。

      自定義Serde和內置Serde

      Hive的Serde分為自定義 Serde和內置Serde,其中使用自定義 Serde 時需要在CREATE TABLE句式中指定ROW FORMAT子句的 row_format值為 Serde,并根據Serde類型指定實現類;內置 Serde需要在 CREATE TABLE句式中指定 ROW FORMAT子句的row_format值為DELIMITED。Hive中常用的自定義Serde和內置Serde如表1和表2所示。

      表1 常用的自定義Serde

      自定義Serde

      介紹

      ROW FORMAT SERDE
      'org.apache.hadoop.hive.serde2.RegexSerDe'
      WITH SERDEPROPERTIES
      (
      "input,regex"="regex"
      )
      STORED AS TEXTFILE;
      使用正則表達式序列化/反序列
      化數據表的每一行數據,其中
      regex用于指定正則表達式
      ROW FORMAT SERDE
      'org.apache.hive.heatalog.data.JsonSerDe
      STORED AS TEXTFILE
      使用JSON格式序列化/反序列
      化數據表的每一行數據
      CREATE TABLE my_table(a string, b string, ….)
      ROW FORMAT SERDE
      'org.apache.hadoop.hive.serde2.OpenCSVSerde'
      WITH SERDEPROPERTIES (
        "separatorChar" = "\t",
        "quoteChar       ="'"
        "escapeChar"       ="\\"
      )
      STORED AS TEXTFILE;
      使用CSV格式序列化/反序列化數據表的每一行數據,其中separatorChar用于指定CSV 文件的分隔符:quoteChar用于指定CSV文件的應用符;escapeChar用于指定CSV文件的轉義符

      表2 常用的內置Serde

      內置Serde

      介紹

      FIELDS TERMINATED BY char [ESCAPED
      BY char]
      FIELDS TERMINATED指定字段分隔符:ESCAPED指定轉義符,避免數據中存在與字段分隔符一樣的字符,造成混淆
      COLLECTION ITEMS TERMINATED
      BY char
      使用JSON格式序列化/反序列
      化數據表的每一行數據
      MAP KYS TERMINATED BY char 指定MAP中Key和Value 的分隔符
      LINES TERMINATED BY char 指定行分隔符
      NULL. DEFINED AS char 自定義空值格式dive默認為'\N'

      表屬性

      通過CREATETABLE句式創建數據表時可以使用TBLPROPERTIES子句指定表屬性,Hive表屬性分為自定義屬性和預定義屬性,其中使用自定義屬性時,用戶可以自定義屬性名稱(property_name)和屬性值(property_value),用于為創建的數據表指定自定義標簽,例如指定創建表的作者、創建表的時間等;使用預定義屬性時,需要根據Hive規定的屬性名稱和屬性值使用,用于為創建的數據表指定相關配置,有關Hive預定義屬性如表3所示。

      圖3 Hive預定義屬性

      屬性

      描述

      comment table_comment 表描述
      hbase,table,name table_name 集成HBase
      immutable true 或 false 防止意外更新,若為true,則無法通過lnsert實現數據的更新和插入
      orc,compress ZLIB 或 SNAPPY或 NONE 指定ORC壓縮方式
      transactional true 或 false 指定表是否支持ACID(更新、插入、刪除)
      NO_AUTO_COMPACTION true 或 false 表事務屬性,指定表是否支持自動緊縮
      compactor.mapreduce.map.memory.mb mapper_memory 表事務屬性,指定緊縮map(內存/MB)作業的屬性
      compactorthreshold.hive
      .compactor,delta,num,threshold
      threshold_num 表事務屬性,如果有超過threshold_num 個
      增量目錄,則觸發輕度緊縮
      compactorthreshold.hive
      .compactor,delta,num,threshold
      threshold_pet 表事務屬性,如果增量文件的大小與基礎文
      件的大小比率大于threshold_pet(區間為
      0~1).則觸發深度緊縮
      auto.purge true 或 false 若為trae,則刪除或者覆蓋的數據會不經過
      回收站直接被刪除
      EXTERNAL true 或 false 內部表和外部表的轉換


      0 分享到:
      性vvvv

        <p id="hc59b"><label id="hc59b"><xmp id="hc59b"></xmp></label></p><tr id="hc59b"><label id="hc59b"></label></tr>
        <p id="hc59b"></p>

      1. <table id="hc59b"><ruby id="hc59b"></ruby></table>
        <acronym id="hc59b"><strong id="hc59b"><xmp id="hc59b"></xmp></strong></acronym>