首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Sqoop 實戰:從 HBase/Hive 導出資料到 MySQL 完整流程

     編輯:MySQL 綜合教學

Sqoop 實戰:從 HBase/Hive 導出資料到 MySQL 完整流程

Sqoop 無法直接從 HBase 導出至 MySQL,需透過 Hive 中轉:建立 HBase 外部表 → 建立 Hive 原生臨時表 → 導入資料 → Sqoop 導出至 MySQL。

資料準備

MySQL 建立目標表

CREATE TABLE `employee` (
  `rowkey` int(11) NOT NULL,
  `id` int(11) NOT NULL,
  `name` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

注意: Hive 映射 HBase rowkey 常用 key,但 key 是 MySQL 保留字,建表時避免使用,改用 rowkey。

HBase 建表並插入測試資料

hbase(main):005:0> create 'employee','info'
hbase(main):006:0> put 'employee',1,'info:id',1
hbase(main):009:0> put 'employee',1,'info:name','peter'
hbase(main):011:0> put 'employee',2,'info:id',2
hbase(main):012:0> put 'employee',2,'info:name','paul'

建立 Hive 外部表映射 HBase

CREATE EXTERNAL TABLE h_employee(key int, id int, name string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key, info:id,info:name")
TBLPROPERTIES ("hbase.table.name" = "employee");

驗證:select * from h_employee; 可看到資料。

建立 Hive 原生臨時表

CREATE TABLE h_employee_export(key INT, id INT, name STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054';  -- 逗號分隔

HDFS 存儲樣貌:1,1,peter、2,2,paul。

步驟一:外部表導入臨時表

INSERT OVERWRITE TABLE h_employee_export SELECT * FROM h_employee;

驗證 HDFS 檔案內容已為逗號分隔文本。

步驟二:Sqoop 導出至 MySQL

sqoop export \
  --connect jdbc:mysql://localhost:3306/sqoop_test \
  --username root --password root \
  --table employee \
  --m 1 \
  --export-dir /user/hive/warehouse/h_employee_export/

關鍵日誌:Job job_... completed successfully、Exported 2 records。

可透過 https://hadoop01:8088/proxy/application_.../ 追蹤任務詳情。

結果驗證

mysql> select * from employee;
+--------+----+-------+
| rowkey | id | name  |
+--------+----+-------+
| 1      | 1  | peter |
| 2      | 2  | paul  |
+--------+----+-------+

導入成功!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved