最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于Hive中的NULL空值處理問(wèn)題

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

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

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

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

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

可以看出存儲(chǔ)NULL的\N 浪費(fèi)了大量空間。

但hive的NULL有時(shí)候是必須的:

  • 1)hive中insert語(yǔ)句必須列數(shù)匹配,不支持不寫(xiě)入,沒(méi)有值的列必須使用null占位。
  • 2)hive表的數(shù)據(jù)文件中按分隔符區(qū)分各個(gè)列。空列會(huì)保存NULL(\n)來(lái)保留列位置。但外部表加載某些數(shù)據(jù)時(shí)如果列不夠,如表13列,文件數(shù)據(jù)只有2列,則在表查詢時(shí)表中的末尾剩余列無(wú)數(shù)據(jù)對(duì)應(yīng),自動(dòng)顯示為NULL。

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

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

a、用語(yǔ)句

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

實(shí)現(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、或者通過(guò)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é)省空間的驗(yàn)證結(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

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

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論

方城县| 旬邑县| 永寿县| 塘沽区| 漠河县| 永年县| 玉山县| 盐城市| 卢氏县| 新建县| 铁力市| 兰州市| 开平市| 沅陵县| 南阳市| 黄骅市| 新化县| 广灵县| 新津县| 清水河县| 板桥市| 南丹县| 西丰县| 雅安市| 鞍山市| 钦州市| 隆化县| 尉氏县| 长兴县| 简阳市| 广平县| 岳西县| 巴南区| 元谋县| 新河县| 胶南市| 新兴县| 镇安县| 宣武区| 安阳市| 鹤山市|