Hive、MySQL、HBase数据互导
Hive预操作
创建临时表user_action
hive> create table dblab.user_action(id STRING,uid STRING, item_id STRING, behavior_type STRING, item_category STRING, visit_date DATE, province STRING) COMMENT 'Welcome to XMU dblab! ' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
确认这个数据文件在HDFS中确实已经被创建
cd /usr/local/hadoop
./bin/hdfs dfs -ls /user/hive/warehouse/dblab.db/user_action
将bigdata_user表中的数据插入到user_action
hive> INSERT OVERWRITE TABLE dblab.user_action select * from dblab.bigdata_user;
查询上面的插入命令是否成功
hive> select * from user_action limit 10;
![](https://i-blog.csdnimg.cn/blog_migrate/b2bba7e959b8c94e6597af892af84c18.png)
使用Sqoop将数据从Hive导入MySQL
将前面生成的临时表数据从Hive导入到MySQL中
登录MySQL
mysql –u root –p
执行上面命令后,就进入mysql>命令提示符状态
创建数据库
mysql> show databases; #显示所有数据库
mysql> create database dblab; #创建dblab数据库
mysql> use dblab; #使用数据库
注意:使用下面的命令查看数据库编码:
mysql>show variables like "char%";
请确认当前编码格式为utf-8,否则无法导入中文。
若编码格式需要修改,参照博客:https://blog.csdn.net/weixin_42208645/article/details/80857416
创建表
mysql> CREATE TABLE `dblab`.`user_action` (`id` varchar(50),`uid` varchar(50),`item_id` varchar(50),`behavior_type` varchar(10),`item_category` varchar(50), `visit_date` DATE,`province` varchar(20)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> exit #创建成功后退出
导入数据
cd /usr/local/sqoop
./bin/sqoop export --connect jdbc:mysql://localhost:3306/dblab --username root --password hadoop --table user_action --export-dir '/user/hive/warehouse/dblab.db/user_action' --fields-terminated-by '\t'; #导入命令
如果输出类似以下信息,表示导入成功
查看MySQL中user_action表数据
mysql -u root -p
mysql> use dblab;
mysql> select * from user_action limit 10;
至此,从Hive导入数据到MySQL中的操作,顺利完成。
使用Sqoop将数据从MySQL导入HBase
使用Hadoop集群、MySQL服务、HBase服务
cd /usr/local/hbase
./bin/start-hbase.sh
启动HBase shell
cd /usr/local/hbase
./bin/hbase shell
解决方法:
(1)原因:运行hbase(zookeeper)的用户无法写入zookeeper文件,导致