淘寶雙11大數據分析(Hive 分析篇-下)

前言

本篇主要是數據遷移,使用 Sqoop 把 Hive 中的數據遷移到 MySQL 中。

閱讀此篇文章,需要先閱讀前篇:

  1. 淘寶雙11大數據分析(環境篇)
  2. 淘寶雙11大數據分析(數據準備篇)
  3. 淘寶雙11大數據分析(Hive 分析篇-上)

當前環境

  1. 安裝好了 Hive 、MySQL 和 Sqoop 。
  2. 啓動 Hive

使用 jps 命令查看當前服務:

[root@centos2020 dataset]# jps
12707 RunJar
7876 NameNode
8183 ResourceManager
7930 DataNode
8477 NodeManager
17086 Jps

創建一個臨時表

hive> create table dbtaobao.inner_user_log(user_id INT,item_id INT,cat_id INT,merchant_id INT,brand_id INT,month STRING,day STRING,action INT,age_range INT,gender INT,province STRING) COMMENT 'Welcome to XMU dblab! Now create inner table inner_user_log ' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
OK
Time taken: 0.464 seconds

將 user_log 表中的數據插入到 inner_user_log

INSERT OVERWRITE TABLE dbtaobao.inner_user_log select * from dbtaobao.user_log;

確認數據已經在 inner_user_log 中:

hive> select * from dbtaobao.inner_user_log limit 5;
OK
328862	406349	1280	2700	5476	11	11	0	0	1	四川
328862	406349	1280	2700	5476	11	11	0	7	1	重慶市
328862	807126	1181	1963	6109	11	11	0	1	0	上海市
328862	406349	1280	2700	5476	11	11	2	6	0	臺灣
328862	406349	1280	2700	5476	11	11	0	6	2	甘肅
Time taken: 1.732 seconds, Fetched: 5 row(s)

使用 Sqoop 遷移數據

MySQL 中的準備

創建數據庫dbtaobao

mysql> create database dbtaobao;

確認character_set_server編碼是 utf8

mysql> use dbtaobao;
Database changed
mysql> show variables like "char%";
+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | utf8                                   |
| character_set_connection | utf8                                   |
| character_set_database   | utf8                                   |
| character_set_filesystem | binary                                 |
| character_set_results    | utf8                                   |
| character_set_server     | utf8                                   |
| character_set_system     | utf8                                   |
| character_sets_dir       | /usr/mysql/mysql5.7.26/share/charsets/ |
+--------------------------+----------------------------------------+
8 rows in set (0.11 sec)

創建表

CREATE TABLE `dbtaobao`.`user_log` (`user_id` varchar(20),`item_id` varchar(20),`cat_id` varchar(20),`merchant_id` varchar(20),`brand_id` varchar(20), `month` varchar(6),`day` varchar(6),`action` varchar(6),`age_range` varchar(6),`gender` varchar(6),`province` varchar(10)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

導入數據

[root@centos2020 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop export --connect jdbc:mysql://centos2020:3306/dbtaobao --username root --password root --table user_log --export-dir '/user/hive/warehouse/dbtaobao.db/inner_user_log' --fields-terminated-by ',';

參數解釋:

–-connect jdbc:mysql://localhost:3306/dbtaobao 表示要複製數據到 mysql

-–username root 表示mysql 的遠程登陸名

-–password root 表示mysql 的遠程登陸密碼

-–table user_log表示 mysql 中的表名,即將被導入數據的表

export-dir ‘/user/hive/warehouse/dbtaobao.db/user_log 表示即將被導出的文件,是 hdfs 文件中的路徑

fields-terminated-by ‘,’ 表示hive 的文件字段的分隔符號
在這裏插入圖片描述

MySQL 中查看數據是否已經導入

在這裏插入圖片描述
確認,數據已經導出到 mysql 中了。

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