代码拉取完成,页面将自动刷新
hive
中的表要导出到 mysql
需要满足以下几点要求
hive
相同的数据库和表mysql
和 hive
的表的数据结构相同mysql
,因为 sqoop
会执行 mysqlimport
命令然后我们按步骤执行以下操作
在任意目录下创建要导入 hive
的数据源,例如我的数据源 ~/testdata/test1.txt
内容为:
1,ZhangSan
2,LiSi
3,LaoWang
4,ZhaoLiu
5,QianQi
注意: 为了保证数据被正确读入
hive
,每个字段我们用,
逗号隔开,使用换行符来解析数据库中的一条数据
进入 hive
终端,然后执行以下操作
# 执行hive命令进入hive终端
hive
# 以下命令是在 hive 终端中执行的
# 创建名为 hive 的数据库
hive> create database hive;
# 切换当前使用的数据库为 hive 库
hive> use hive;
# 创建表 test1,其中第二行代码代表数据字段用 `,` 逗号分隔,第三行代码代表数据用换行符分隔
hive> CREATE TABLE test1 (id INT, name STRING)
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
> LINES TERMINATED BY '\n';
# 导入文本文件到 test1 表中, 此处数据源参数我使用的是绝对路径
hive> LOAD DATA LOCAL INPATH '/home/master/testdata/test1.txt' INTO TABLE test1;
# 查询数据,看是否导入成功
hive> select * from test1;
进入 mysql
终端,然后执行以下操作
# 进入mysql
mysql -u hive -p
# 创建库
mysql> create database hive;
# 创建表
mysql> CREATE TABLE test1 (
> id INT,
> name VARCHAR(255)
> );
# 注意执行 sqoop 命令的路径,我这里是添加了 bin 目录的
bin/sqoop export \
--connect jdbc:mysql://localhost:3306/hive \
--username root \
--password 111111 \
--table test1 \
--export-dir /user/hive/warehouse/hive.db/test1 \
# 指定导出的 test1 中字段顺序
--columns "id,name" \
--input-fields-terminated-by '\t' \
--input-lines-terminated-by '\n' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
# 后面两个参数可以不写
-m 1 \
--direct
请在所有 slave
主机的 mysql
中创建要导入的表
use hive;
CREATE TABLE result (
id INT,
name VARCHAR(255),
count INT
);
然后执行 sqoop
命令
bin/sqoop export \
--connect jdbc:mysql://localhost:3306/hive \
--username root \
--password 111111 \
--table result \
--export-dir /user/hive/warehouse/hive.db/result \
--columns "id,name,count" \
--input-fields-terminated-by ',' \
--input-lines-terminated-by '\n' \
--input-null-string '\\N' \
--input-null-non-string '\\N'
mysql 中的表要导入到 hive 需要满足以下几点要求
若安装 mysql 时已经修改 则此步可以省略
# 切换数据库
use mysql;
# 修改权限
update user set host = '%' where user = 'root';
# 检查
select host,user from user;
修改后需要重启 mysql
sudo systemctl restart mysql
bin/sqoop import \
--connect jdbc:mysql://slave2:3306/hive \
--username hive \
--password 111111 \
--table test1 \
# 指定数据分隔的字段
--split-by id \
--hive-import \
--hive-table hive.test1
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。