欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關于Hive中的NULL空值處理問題

 更新時間:2023年07月07日 09:22:38   作者:longshenlmj  
這篇文章主要介紹了關于Hive中的NULL空值處理問題,Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結構化的數(shù)據(jù)文件映射為一張表,并提供類SQL查詢功能,需要的朋友可以參考下

HIVE表中默認將NULL存為\N,可查看表的源文件(hadoop fs -cat或者hadoop fs -text),文件中存儲大量\N,這樣造成浪費大量空間。而且用java、python直接進入路徑操作源數(shù)據(jù)時,解析也要注意。

另外,hive表的源文件中,默認列分隔符為\001(SOH),行分隔符為\n(目前只支持\n,別的不能用,所以定義時不需要顯示聲明)。元素間分隔符\002,map中key和value的分隔符為\003。

舉例,如源文件中一條記錄為:

10000042SOH77SOH435SOH16SOH22SOH1156120000SOH\NSOH\NSOH\NSOH\NSOH\NSOH\NSOH\NSOHyoukuSOH85133.0SOH111

可以看出存儲NULL的\N 浪費了大量空間。

但hive的NULL有時候是必須的:

  • 1)hive中insert語句必須列數(shù)匹配,不支持不寫入,沒有值的列必須使用null占位。
  • 2)hive表的數(shù)據(jù)文件中按分隔符區(qū)分各個列??樟袝4鍺ULL(\n)來保留列位置。但外部表加載某些數(shù)據(jù)時如果列不夠,如表13列,文件數(shù)據(jù)只有2列,則在表查詢時表中的末尾剩余列無數(shù)據(jù)對應,自動顯示為NULL。

所以,NULL轉化為空字符串,可以節(jié)省磁盤空間,實現(xiàn)方法有幾種

1)建表時直接指定(兩種方式)

a、用語句

ROW FORMAT SERDE ‘org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'with serdeproperties('serialization.null.format' = '')

實現(xiàn),注意兩者必須一起使用,如

   CREATE TABLE hive_tb (id int,name STRING)
   PARTITIONED BY ( `day` string,`type` tinyint COMMENT '0 as bid, 1 as win, 2 as ck', `hour` tinyint)
   ROW FORMAT SERDE ‘org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
   WITH SERDEPROPERTIES (
        ‘field.delim'='/t',
        ‘escape.delim'='//',
        ‘serialization.null.format'=''
   ) STORED AS TEXTFILE;

b、或者通過ROW FORMAT DELIMITED NULL DEFINED AS '' 如

? ?CREATE TABLE hive_tb (id int,name STRING)
? ?PARTITIONED BY ( `day` string,`type` tinyint COMMENT '0 as bid, 1 as win, 2 as ck', `hour` tinyint)
? ?ROW FORMAT DELIMITED?
? ? ? ? NULL DEFINED AS ''?
? ?STORED AS TEXTFILE;

2)修改已存在的表

    alter table hive_tb set serdeproperties('serialization.null.format' = '');

節(jié)省空間的驗證結果如下:

    hadoop fs -du /hivedata/warehouse/pmp.db/hive_tb/day=2016-05-14/type=1/hour=00/0*
    1137
    hadoop fs -du /hivedata/warehouse/pmp.db/hive_tb/day=2016-05-14/type=1/hour=01/0*
    319753
    -----------------------------------
    hadoop fs -du /hivedata/warehouse/pmp.db/hive_tb/day=2016-05-14/type=1/hour=00/0*
    885
    hadoop fs -du /hivedata/warehouse/pmp.db/hive_tb/day=2016-05-14/type=1/hour=01/0*
    249529

到此這篇關于關于Hive中的NULL空值處理問題的文章就介紹到這了,更多相關Hive中的NULL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • sql Union和Union All的使用方法

    sql Union和Union All的使用方法

    UNION指令的目的是將兩個SQL語句的結果合并起來。從這個角度來看, 我們會產(chǎn)生這樣的感覺,UNION跟JOIN似乎有些許類似,因為這兩個指令都可以由多個表格中擷取資料。
    2009-07-07
  • MySQL與Oracle 差異比較之四條件循環(huán)語句

    MySQL與Oracle 差異比較之四條件循環(huán)語句

    這篇文章主要介紹了MySQL與Oracle 差異比較之四條件循環(huán)語句,需要的朋友可以參考下
    2017-04-04
  • sql語句創(chuàng)建外鍵關聯(lián)的完整實例

    sql語句創(chuàng)建外鍵關聯(lián)的完整實例

    這篇文章主要給大家介紹了關于sql語句創(chuàng)建外鍵關聯(lián)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • SQLite快速入門指南

    SQLite快速入門指南

    這篇文章主要介紹了SQLite快速入門指南,作為開源的嵌入式數(shù)據(jù)庫,SQLite可以在不需要過多投入數(shù)據(jù)庫開發(fā)時提供十分輕便的服務,需要的朋友可以參考下
    2015-07-07
  • hive函數(shù)簡介

    hive函數(shù)簡介

    hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結構化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析
    2017-09-09
  • PostgreSQL數(shù)據(jù)庫服務端監(jiān)聽設置及客戶端連接方法教程

    PostgreSQL數(shù)據(jù)庫服務端監(jiān)聽設置及客戶端連接方法教程

    這篇文章主要介紹了PostgreSQL數(shù)據(jù)庫服務端監(jiān)聽設置及客戶端連接方法,需要的朋友可以參考下
    2014-07-07
  • 有效防止sql注入的方法演示

    有效防止sql注入的方法演示

    這篇文章主要給大家介紹了關于有效防止sql注入的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用sql具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-08-08
  • 最新DataGrip2020.2.x破解版激活碼的步驟詳解(支持Mac/Windows/Linux)

    最新DataGrip2020.2.x破解版激活碼的步驟詳解(支持Mac/Windows/Linux)

    這篇文章主要介紹了最新DataGrip2020.2.x破解版激活碼教程詳解(支持Mac/Windows/Linux),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Navicat保存查詢和查詢文件放在哪個位置最佳方法推薦

    Navicat保存查詢和查詢文件放在哪個位置最佳方法推薦

    這篇文章主要介紹了Navicat保存查詢和查詢文件放在哪個位置,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 詳解SQLite中的數(shù)據(jù)類型

    詳解SQLite中的數(shù)據(jù)類型

    這篇文章主要介紹了詳解SQLite中的數(shù)據(jù)類型,針對版本為SQLite3,講解非常詳細,超推薦!需要的朋友可以參考下
    2015-07-07

最新評論