hive的分隔符問題

在使用hive的時候,分隔符是必不可少的,當學習的時候使用的都是常規分隔符,比如:逗號“,”、豎線“|”等,這些鍵盤上都可以直接輸入的字符,但是這些字符只要是鍵盤上的,在針對複雜的業務邏輯的時候,都會失效。
比如你有一個備註字段,這個字段允許用戶輸入輸入鍵盤上的任何字符,一旦用戶輸入了你選擇的分隔符,那麼Hive在使用這個數據的時候,就會導致hive表中的字段錯位。

使用多個組合字符,也可以成爲一種選擇,但是有些導入導出工具,不支持多字符分隔符,比如:阿里的DATAX就不支持多字符分隔符。

 

解決:

解決方法一
把換行符替換成空字符串,sqoop中有替換的參數,但是datax中沒有。有些場景中,爲了保留數據的完整性,必須保留換行符怎麼辦呢?

解決方法二
用orc存儲hive表
ORC的全稱是(Optimized Row Columnar),ORC文件格式是一種Hadoop生態圈中的列式存儲格式,它的產生早在2013年初,最初產生自Apache Hive,用於降低Hadoop數據存儲空間和加速Hive查詢速度。和Parquet類似,它並不是一個單純的列式存儲格式,仍然是首先根據行組分割整個表,在每一個行組內進行按列存儲。ORC文件是自描述的,它的元數據使用Protocol Buffers序列化,並且文件中的數據儘可能的壓縮以降低存儲空間的消耗,目前也被Spark SQL、Presto等查詢引擎支持
因爲是列式存儲,所以不存在某字段的換行符的原因導致數據錯亂
https://blog.csdn.net/u013289115/article/details/85775699?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章