Hive用SerDe處理匯入的檔案

2021-09-01 19:35:42 字數 2075 閱讀 6860

一hive用正規表示式處理稍複雜資料的匯入檔案

a正則解析器regexserde

regextserde用法

使用該解析器來處理apche web日誌資料的乙個例子:這個例子好好讀讀

處理web日誌

這個例子也說明了要想使用該解析器是需要匯入相應的jar包的。

關於output.format.string" = "%1s

s %2

ss %3s

s %4

ss %5s

s %6

ss %7s

s %8

ss %9$s

string.format %1s

其中%1 %2表示第1,2個佔位符。$s表示用字串形式替代佔位符,是一種格式化輸出。

二使用hive處理csv格式檔案

csv:逗號分隔值檔案

我們右鍵以記事本開啟要處理的csv檔案。這裡以用八爪魚爬下來的fang4.csv為例

從圖上可以看到,csv資料實際上以逗號作為字段分隔符,但是一般不要直接

row format delimited fields terminated by ','簡單的這樣指定分隔符來建表。因為有兩個問題:

1.如果列值自身存在逗號,會導致錯誤

2.有些字串是加了引號的。

所以如果只是以逗號為分隔符來簡單建表的話,會導致乙個欄位被截成好幾個,並且引號也去不掉。阿里雲鏈結裡有對比例子。

可以看到這裡的csv檔案裡,只要列值裡有逗號的,全都加了引號引起來了,代表是乙個整體的字串。

用opencsvserde來處理csv檔案

參考文件:阿里雲csv檔案格式講解

csv serde介紹

可以為行的字段指定字段分隔符、字段內容引用字元和轉義字元,例如with serdeproperties (「separatorchar」 = 「,」, 「quotechar」 = 「`」, 「escapechar」 = 「\「

預設的分隔符是

分隔符:default_separator , 逗號

引號符:default_quote_character 「引號

轉義符:default_escape_character \轉義符

因此這裡採用預設的就能達到以逗號分割,把引號裡的作為欄位來引用這種效果了。當然這三個都可以自己指定。

上面的建表語句也可以寫成:

create table test01(

title string,

url string,

ht string,

floor string,

toward string,

time string,

city string,

county string,

street string,

block string,

address string,

area double,

tp double,

up double,

turl string,

sl string

) row format serde 『org.apache.hadoop.hive.serde2.opencsvserde』

with serdeproperties(

「separatorchar」=」,",

「quotechar」="\"",

「escapechar」="\"

);6載入資料到表

load data local inpath 『/opt/datas/test/fang4.csv.utf8』 into table test;

7查詢驗證

hive (building)> select * from test limit 3;

8發現正常,沒毛病

hive的檔案的記錄格式serde

1 csv serdecreate table if not exists csv id int,name string row format serde org.apache.hadoop.hive.serde2.opencsvserde load data local inpath localp...

hive的資料匯入

hive的資料匯入 使用load語句 load data local inpath filepath overwrite into table tablename partition partcol1 val1,partcol2 val2,將student1.txt資料匯入表t2 load data...

hive 匯入資料的方式

load data local inpath linux filepath into table tablename 應用場景 常見的情況,一般用於日誌檔案的直接匯入 load data inpath hdfs filepath into table tablename 應用場景 本地資料儲存檔案比...