Sqoop抽取从mysql抽取到hive
sqoop抽取到mysql一样有两种方式一种是用command line的方式,一种是用sqoop opt文件调用的方式。(由于两种sqoop一已经记录了,现在主要是利用opt的方式)
一、从hive到mysql,如果hive对应表如果没有分区字段的话配置如下(参数要根据实际情况更改)
fileName:test-hive.opt
import
--connect
"jdbc:mysql://master:3306/test"
--username
root
--password
123456
--table
"rpt_sale_daily"
--columns
"dateid,huodong,pv,uv"
--where
"dateid='2015-08-28'"
--hive-import
--hive-overwrite
--hive-table
test_sale_daily
--hive-drop-import-delims
-m
1
调用文件fileName:sqoop.sh
hadoop fs -rmr sqoop/rpt_sale_daily(先调用hadoop fs命令删除sqoop存在的中间文件表)
sqoop options-file ./test.opt(执行opt文件)
最后在linux执行命令行 sh ./sqoop.sh
如果hive表存在分区的话需要在opt配置文件加多一些配置项
import
--connect
"jdbc:mysql://master:3306/test"
--username
root
--password
123456
--table
"rpt_sale_daily"
--columns
"dateid,huodong,pv,uv"
--where
"dateid='2015-08-28'"
--hive-import
--hive-overwrite
--hive-table
test_sale_pt
--hive-drop-import-delims
--hive-partition-key
ds
--hive-partition-value
"2015-08-28"
-m
1
初次之外基本与上面相同。
记得报目录存在错误的话要先手动删除之前生成的sqoop存在的中间目录
hadoop fs -rmr {home}/{关系db表名}
/user/root/{关系db表名}
还有很多相关的sqoop hive to sql 的配置信息具体查看
http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh5.1.0/SqoopUserGuide.html
note:写配置文件记得格式要严格不能多空格什么。opt方式不能传递参数是缺点,如果想克服这一缺点可能需要自己对program进行封装。
从HDFS到mysql
export
--connect
"jdbc:mysql://master:3306/test"
--username
root
--password
123456
-m
1
--table
"daily_hour_visit_result"
--columns
"dateid,pv,uv"
--export-dir
/user/hive/warehouse/rpt2.db/daily_hour_visit_result/ds=2015-08-28
--input-fields-terminated-by