淘宝双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 中了。

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