Sqoop02:Sqoop导出Hive数据到MySQL

Sqoop02:Sqoop导出Hive数据到MySQL,第1张

1.在Hive中建表:

2.插入数据

insert into student(id,number,name,sex) values(1,'123456789','jack','man')

3.在MySQL建表:

4.编写导出命令:

5.执行命令并查看MySQL表:

补充:如果出现了导入到MySQL的数据中文乱码

首先在mysql的指令界面输入以下命令:

show variables like 'character%'

出现以下界面,我的界面是这样的:

我按照搜到的答案用以下命令:

set character_set_database=utf8

set character_set_server=utf8

将我的界面改成了这样:

经过以上 *** 作问题成功解决

sqoop从mysql向hive中导数据,报数据库访问被拒绝。但诡异的是,sqoop的报错是提示连接本机的mysql被拒绝了,并不是提示连接目标数据所在的mysql被拒绝。我的还连了zookeeper,还会提示连接所有的zookeeper主机的mysql被拒绝。日志如最下方。

其实这些问题都是一个原因,就是目标数据所在的mysql限制了zookeeper的主机去访问它。只需要在该mysql上授权即可。

是的

1、列出mysql数据库中的所有数据库

sqoop list-databases --connect jdbc:mysql://localhost:3306/ -username dyh -password 000000

2、连接mysql并列出数据库中的表

sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username dyh --password 000000

3、将关系型数据的表结构复制到hive中

sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table users --username dyh

--password 000000 --hive-table users --fields-terminated-by "\0001" --lines-terminated-by "\n"

参数说明:

--fields-terminated-by "\0001" 是设置每列之间的分隔符,"\0001"是ASCII码中的1,它也是hive的默认行内分隔符, 而sqoop的默认行内分隔符为","

--lines-terminated-by "\n" 设置的是每行之间的分隔符,此处为换行符,也是默认的分隔符;

注意:只是复制表的结构,表中的内容没有复制

4、将数据从关系数据库导入文件到hive表中

sqoop import --connect jdbc:mysql://localhost:3306/test --username dyh --password 000000

--table users --hive-import --hive-table users -m 2 --fields-terminated-by "\0001"

参数说明:

-m 2 表示由两个map作业执行;

--fields-terminated-by "\0001" 需同创建hive表时保持一致;

5、将hive中的表数据导入到mysql数据库表中

sqoop export --connect jdbc:mysql://192.168.20.118:3306/test --username dyh --password 000000

--table users --export-dir /user/hive/warehouse/users/part-m-00000

--input-fields-terminated-by '\0001'

注意:

1、在进行导入之前,mysql中的表userst必须已经提起创建好了。

2、jdbc:mysql://192.168.20.118:3306/test中的IP地址改成localhost会报异常,具体见本人上一篇帖子

6、将数据从关系数据库导入文件到hive表中,--query 语句使用

sqoop import --append --connect jdbc:mysql://192.168.20.118:3306/test --username dyh --password 000000 --query "select id,age,name from userinfos where \$CONDITIONS" -m 1 --target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by ","

7、将数据从关系数据库导入文件到hive表中,--columns --where 语句使用

sqoop import --append --connect jdbc:mysql://192.168.20.118:3306/test --username dyh --password 000000 --table userinfos --columns "id,age,name" --where "id >3 and (age = 88 or age = 80)" -m 1 --target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by ","

注意:--target-dir /user/hive/warehouse/userinfos2 可以用 --hive-import --hive-table userinfos2 进行替换


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8656597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存