一、創(chuàng)建測試表
create table sqoop_test_from_hdfs(
name varchar(20) comment '姓名',
age int comment '年齡',
sex char(1) comment '性別'
)ENGINE=INNODB comment 'sqoop的測試表從hdfs導(dǎo)出到mysql';
二、常用命令組合
注意點:
(1)如果hdfs上的文件的分隔符不是逗號,則要通過 --fields-terminated-by 指定分隔符,否則會報錯,而且報錯信息不明確提示是分隔符的問題,報錯原因不好找
(2)中文亂碼的問題,需要在jdbc url中添加?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8,添加了這串參數(shù)之后,整個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

