hive建表儲存格式造成的問題

2021-09-30 13:04:30 字數 588 閱讀 3507

用create table tabley as select 欄位a,regexp_extracta,欄位b,regexp_extractb from tablex 之後,

資料比原來多了5條

經查詢,這5條都是其中乙個欄位為null,另外的字段全部=''

百思不得其解

後查詢了下tabley建表的儲存格式是預設的text,而tablex建表時用的是rcfile

將tabley用建表語句指定rcfile格式建表後,insert into table select 重新插入資料,就不會出現資料多的情況了

具體原因待查

這是源表的建**式

row format serde

'org.apache.hadoop.hive.serde2.columnar.lazybinarycolumnarserde'

stored as inputformat

'org.apache.hadoop.hive.ql.io.rcfileinputformat'

outputformat

'org.apache.hadoop.hive.ql.io.rcfileoutputformat'

hive 修改表的儲存格式 Hive檔案儲存格式

列式儲存和行式儲存 5.png 上圖左邊為邏輯表,右邊第乙個為行式儲存,第二個為列式儲存。行儲存的特點 查詢滿足條件的一整行資料的時候,列儲存則需要去每個聚集的字段找到對應的每個列的值,行儲存只需要找到其中乙個值,其餘的值都在相鄰地方,所以此時行儲存查詢的速度更快。列儲存的特點 因為每個欄位的資料聚...

hive建hbase外部表,內部表的問題

對於4000個字元的配置單元儲存區中的serde params表中的param value欄位的字元限制是此問題的根本原因。此限制可防止hive建立高列數的表,最終導致desc或select from失敗,並出現上述錯誤。1 登陸hive metastore所在節點的mysql資料庫 2 指定下面s...

hive表儲存為parquet格式

hive0.13以後的版本 建立儲存格式為parquet的hive表 create table parquet test id int,str string,mp map,lst array,strct struct partitioned by part string stored as parq...