日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sqoop导出orc数据至mysql_Sqoop 支持 ORC 文件格式

發布時間:2024/1/1 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqoop导出orc数据至mysql_Sqoop 支持 ORC 文件格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ORC 介紹

ORC 文件格式是 Hive 0.11.0 版本引入的一種文件格式。ORC 的引入是為了解決其他 Hive 文件格式的局限性。使用 ORC 文件格式提升 Hive 讀取、寫入及處理數據的性能。

與 RCFile 對比,ORC 文件格式有很多優點:每個 Task 只輸出一個文件,降低 NameNode 的負載。

Hive 數據類型支持,包括:datetime、decimal 以及復雜數據類型(struct、list、map、union)。

文件中存儲輕量級的索引:跳過不通過謂語過濾的行組

跳轉到指定的行

基于數據類型的塊模式壓縮:整型數據列采用行程長度編碼(run-length encoding)

字符串數據列采用詞典編碼(dictionary encoding)

使用獨立的 RecordReader 并發讀取相同的文件

無需掃描 markers 就可以分割文件的能力

綁定讀寫需要的內存量

Sqoop 支持 ORC

通過 Sqoop-HCatalog 集成解決 Sqoop 不支持 ORC 的問題。

HCatalog 背景HCatalog 是 Hadoop 的一個 table 與存儲管理的一個服務,用戶可以更容易地使用不同的數據處理工具 Pig、MapReduce 和 Hive 讀寫數據。HCatalog 表的抽象呈現給用戶一個 HDFS 分布式文件系統(HDFS)中的關系視圖,用戶不需要擔心數據存儲在哪里及數據的存儲格式:RCFile 格式、text 文件、或者 SequenceFile。

HCatalog 支持讀寫任何實現了 Hive SerDe(serializer-deserializer)的文件格式。默認的,HCatalog 支持 RCFile、CSV、JSON 和 SequenceFile。要使用用戶自定義格式,必須提供 InputFormat 和 OutputFormat 及 SerDe。

Sqoop 使用 HCatalog 抽象不同存儲格式的能力來支持 RCFile(以及未來的文件類型)。

集成 HCatalog 后新增的參數見 Sqoop 官方文檔:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_sqoop_hcatalog_integration

定制 Sqoop 改造修改 bin/sqoop 命令腳本:為 import 操作增加 Hive Table 分區數據刪除邏輯,在執行導入前不需要另行清理數據,從而簡化 Sqoop import 腳本的開發工作。

Sqoop 導入 ORC 實例

第一步:創建 Hive 表CREATE TABLE `dev.bims_device`(

`code` string,

`mac` string,

`wifi_mac` string,

`create_date` string,

`activate_date` string,

`state` string,

`area_id` bigint,

`city_id` bigint,

`sp_define_id` bigint)

PARTITIONED BY (

`dt` string)

stored as orc;

第二步:Sqoop importsqoop import

--hcatalog-database dev

--hcatalog-table bims_device

--hcatalog-partition-keys dt

--hcatalog-partition-values ${dt}

--connect jdbc:mysql://${host}:${port}/bims

--username "${userName}"

--password "${password}"

--table bims_device

--columns "code,mac,wifi_mac,create_date,activate_date,state,area_id,city_id,sp_define_id"

Sqoop 導出 ORC 實例

第一步:創建 MySQL 數據表CREATE TABLE `test`.`bims_device`(

`code` varchar(50),

`mac` varchar(50),

`wifi_mac` varchar(50),

`create_date` varchar(50),

`activate_date` varchar(50),

`state` varchar(50),

`area_id` bigint,

`city_id` bigint,

`sp_define_id` bigint);

第二步:Sqoop exportsqoop export

--hcatalog-database dev

--hcatalog-table bims_device

--hcatalog-partition-keys dt

--hcatalog-partition-values ${dt}

--connect jdbc:mysql://${host}:${port}/test?useCompression=true

--username ${userName}

--password ${password}

--table bims_device

注意事項- MySQL 表字段名稱必須與 Hive 倉庫中的表字段名稱一致

- Sqoop ORC 導出時,數據類型需要轉換時如果存在臟數據會導致導出失敗。例如,長度為 0 的 String 如果導出為 int 時。

- 導出時需要提前清理 MySQL 中之前導出的數據,避免重復運行時造成數據重復。

總結

以上是生活随笔為你收集整理的sqoop导出orc数据至mysql_Sqoop 支持 ORC 文件格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。