一、创建测试表
create table sqoop_test_from_hdfs(
name varchar(20) comment '姓名',
age int comment '年龄',
sex char(1) comment '性别'
)ENGINE=INNODB comment 'sqoop的测试表从hdfs导出到mysql';
二、常用命令组合
注意点:
(1)如果hdfs上的文件的分隔符不是逗号,则要通过 --fields-terminated-by 指定分隔符,否则会报错,而且报错信息不明确提示是分隔符的问题,报错原因不好找
(2)中文乱码的问题,需要在jdbc url中添加?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8,添加了这串参数之后,整个jdbc url需要使用引号(单引号或双引号都可以)包起来,否则报错
(2.1)指定分隔符的命令
sqoop export \
--connect 'jdbc:mysql://192.168.228.128:3306/ruozedata?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8' \
--username root \
--password root \
--mapreduce-job-name hdfs2mysql \
--table sqoop_test_from_hdfs \
--columns "name,age,sex" \
--export-dir /user/hadoop/sqoop_test_column_split_where \
--fields-terminated-by '|' \
-m 2
----------------------------------------------------------------
(2.2)如果分隔符为逗号的,可以不指定分隔符
sqoop export \
--connect 'jdbc:mysql://192.168.228.128:3306/ruozedata?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8' \
--username root \
--password root \
--mapreduce-job-name hdfs2mysql \
--table sqoop_test_from_hdfs \
--columns "name,age,sex" \
--export-dir /user/hadoop/sqoop_test_column \
-m 2