當前位置:編程學習大全網 - 源碼下載 - hive存儲parquet表

hive存儲parquet表

parquet格式的表在生產環境中經常被使用到,具有列式存儲和壓縮等特點,我們怎麽在hive中存儲parquet格式的表呢。

這裏使用oracle的emp表

加載本地數據到hive表

執行查詢

發現報錯

emp使用parquet格式存儲,其中imputFormat和outputFormat都是parquet的相關的,也就是我的imputFormat是parquent的,但是妳傳過來的是text,我不認識

我們看壹下emp的相關信息,可以看到這裏的都是parquet的format的,這是導致這次錯誤的原因。

這就導致了我們需要每次都先把text文件轉化為parquet的文件,然後parquent表進行加載才可以,下面介紹官方推薦的使用方法。

查看emp_tmp的表的信息,這裏可以看到,默認的是TextImputFormat和TextOutputFormat的。

然後加載數據到emp_tmp,查看數據,是正常顯示的

然後現在把之前的emp裏面的數據給刪除

然後把emp_tmp表裏面的數據加載到emp

查詢壹下,數據正常顯示,這個方式使用起來還行,就是每次都需要對臨時表進行操作,還是比較麻煩的。

感覺這個問題是經常出現,為什麽會這樣呢。這個和hive的版本有壹定的關系。

可以看出hive官方將inputformat和outputformat進行了整合,這樣使用起來也是比較方便的。

但是可能有人想,那我修改inputformat不就行了,下面我介紹壹下,看是否可以

創建emp2表,是parquet的存儲格式的

修改inputformat 和serde,這裏inputFormat是TextInputFormat,SEDE使用的是LazySimpleSerDe,Outputformat任然是Parquet的,這裏需要帶上。

查看emp2表的信息,如下圖表示修改成功

加載數據到emp2

查詢數據,執行成功

到這裏,修改inputformat和serde的方法也介紹完成了,我們以為成功了,但是上hdfs上壹看,文件還是txt格式的,所以通過修改inputformat和serde的方法不行。

肯定有人想使用這個方法

這個方法我也嘗試了,但是返回的值全都是null

?在僅僅使用hive的時候,如果想把txt文件裏面的數據保存到parquet表裏面的話,可以使用建立臨時表的方法,這個方法也是比較好操作的。

?但是其實如果使用spark,flink等分布式計算引擎的話,是可以直接的讀取txt數據保存到parquet表裏面的,框架幫我們做了轉化。這種方式也是我們在工作中經常使用的。

?上面也介紹了修改inputformat和ser的方式,秀給inputformat是可以讓txt文件裏面的數據被讀進來的,如果同時還修改了serde為lazysimpleserde的話,這個是把數據保存為text格式的,已經完全和parquet沒有關系了,保存的文件還是txt格式的。僅修改inputformat,但是使用的serde是parquet的,但是數據進出不壹致,也是有問題的。

  • 上一篇:炒股時,基本面和技術面發生了沖突。妳更側重哪個指標? 怎麽看
  • 下一篇:我想用手機下載個倉庫管理軟件,只需要有倉庫出入,盤點 就可以了,不需要財務,什麽軟件好用請高手指點
  • copyright 2024編程學習大全網