您的位置:首页 > 数据库 > SQL

【数据平台】sqoop支持hive和mysql互导的基本语句格式

2017-09-25 15:05 447 查看
1)从mysql导入到hive的命令格式:

sqoop import --connect jdbc:mysql://127.0.0.1:3306/dbname --username mysql(mysql用户名) --password 123456(密码) --table student(mysql上的表) --hive-import -m 1


导入到hive默认的default库,指定数据库可以设置--hive-database 参数

2)从hive导入到mysql的命令格式:

全部导入:

Sqoop export --connect  jdbc:mysql://127.0.0.1:3306/dbname  --username mysql(mysql用户名) --password 123456(密码) --table  student(mysql上的表) --hcatalog-database sopdm(hive上的schema) --hcatalog-table student(hive上的表)


部分导入,指定导入的具体列名:

Sqoop export --connect  jdbc:mysql://127.0.0.1:3306/dbname  --username mysql(mysql用户名) --password 123456(密码) --table  student(mysql上的表) --columns "id,name,age"  --hcatalog-database sopdm(hive上的schema) --hcatalog-table student(hive上的表)


3)分享一个案例,花了一天时间摸索的,比较坑爹,希望对后来者有参考作用

第一步:在mysql建表,字段中包含:

`from` varchar(255),
`target` varchar(255),
`click_event` varchar(255),
`sessionid` varchar(255),


第二:在集群上执行sqoop

sqoop export --connect "jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=utf-8"  --username mysql用户名 --password mysql密码 --table mysql表  -fields-terminated-by '\001'  --input-null-string "\\\\N" --input-null-non-string "\\\\N" --export-dir /user/hive/warehouse/db/hive表hdfs路径 --update-key resourceid --update-mode allowinsert


然后一直提示:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from, target, click_event' at line 1


然后一直不断建表(核对字段、分隔符、数据类型等),研究sqoop的export参数设置,想想各种空值处理,一直不成功。

第三步:终极方案,想当郁闷,from字段改名即可,如下:

`upfrom` varchar(255),
`target` varchar(255),
`click_event` varchar(255),
`sessionid` varchar(255),
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: