hive預設是所有檔案都是utf8的。hive將按照utf8編碼格式對資料檔案進行解析和查詢。
如果資料檔案不是utf8,則需要serde支援指定編碼格式。對於常用的lazy******serde是支援指定字符集的。
serde is a short name for 「serializer and deserializer.」
hive uses serde (and !fileformat) to read and write table rows.
hdfs files –> inputfileformat –> –> deserializer –> row object
row object –> serializer –> –> outputfileformat –> hdfs files
指定serde和字符集。
1234
createexternal
table
student8(id
string
,name
string
)row
format
serde
'org.apache.hadoop.hive.serde2.lazy.lazy******serde'
with
serdeproperties
("field.delim"
=','
,"serialization.encoding"
='gbk'
)location
'/data/student8/'
;
注意:為指定字符集,必須顯式指定serde的類。指定serde類後,則不允許使用"fields terminated by",而是要顯式通過"field.delim"屬性指定分隔符。
gbk 轉換 utf 8問題
問題一 檔案已經另存為了utf 8碼,但關閉後重新開啟就自動變成了ansi編碼 答 原因是該檔案中沒有包含任何中文字元,如果該檔案有包含中文字元,將檔案另存為utf 8編碼後,中文字元會以3個位元組的寬度來儲存 要看16進製制 這樣,在第二次開啟檔案時,編輯器會自動將檔案識別為utf 8編碼。請仔細...
UTF 8和GBK的區別
utf 8和gbk的區別 2009年06月09日 星期二 下午 02 00 gbk是國家標準gb2312基礎上擴容後相容gb2312的標準。gbk的文字編碼是用雙位元組來表示的,即不論中 英文本元均使用雙位元組來表示,為了區分中文,將其最高位都設定成1。gbk包含全部中文字元,是國家編碼,通用性比u...
GBK與UTF 8的區別
gbk的文字編碼是雙位元組來表示的,即不論中 英文本元均使用雙位元組來表示,只不過為區分中文,將其最高位都定成1。至於utf 8編碼則是用以解決國際上字元的一種多位元組編碼,它對英文使用8位 即乙個位元組 中文使用24位 三個位元組 來編碼。對於英文本元較多的論壇則用utf 8節省空間。gbk包含全...