Sqoop
数据导入Hive分三步:1)导入数据到HDFS 2)Hive建表 3)使用“LOAD DATA INPAHT”将数据LOAD到表中
数据导入HBase分二步:1)导入数据到HDFS 2)调用HBase put操作逐行将数据写入表
--sqoop到hdfs
#默认导入文件夹/user/root,默认字段分隔符逗号, 默认空值null
#--delete-target-dir 已存在则先删除 不能与--incremental append一起用
#--incremental append 追加,字段类型不能是字符串,大于lastvalue的值会被插入
#--incremental lastmodified 字段类型必须是时间,大于等于lastvalue的配合--merge-key column 更新已存在的值 --append 追加值
sqoop import --connect "jdbc:oracle:thin:@//10.79.0.25:1521/mdwymsdb" \
--username "mdwadm" \
--password "mdwadm1234" \
--table "TEST1" \
--target-dir /tmp/test \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by '\t' \
--incremental append \
--check-column A \
--last-value 'B'
#sqoop 到hive
#oracle date类型默认导入到hive变为string类型,hive 字段不能命名为 order,sort,reduce,cast,directory
#sqoop导入到HDFS默认null作为表示空,再导入到hive,null会作为字符串'null'插入,因此默认LazySimpleSerDe需设置--null-string '\\N' --null-non-string '\\N' --fields-terminated-by '\001'
#--query必须加and $CONDITIONS query语句如果用双引号 $需要转义\$CONDITIONS
#--target-dir 指定不存在的文件夹,sqoop会在hdfs新建文件夹导入hdfs,从hdfs 成功load hive之后会进行删除
#--hive-drop-import-delims删除数据库原始数据中\n, \r, and \01
#--增量导入同HDFS,去掉--hive-overwrite 每次增量同样会在warehouse产生一个文件,与--query 加where效果类似
sqoop import -D hive.metastore.uris=thrift://bdpzookeeper.boeb9.com:9083,thrift://bdpcm01.boeb9.com:9083 -D mapreduce.job.queuename=root.etl.default \
--connect "jdbc:oracle:thin:@//10.79.0.25:1521/mdwymsdb" --username "mdwadm" --password "mdwadm1234" \
--query 'SELECT A,B,C,D FROM TEST1 where 1=1 and $CONDITIONS' \
--map-column-java B=Double \
--as-parquetfile \
--target-dir /tmp/test --fields-terminated-by '\001' \
--hive-import --hive-overwrite --hive-database "MDW" --hive-table "TEST1" \
--null-string '\\N' --null-non-string '\\N' \
--class-name test --outdir /tmp/test --bindir /tmp/test \
--split-by "A" --m 1 \
--hive-drop-import-delims
#sqoop to hbase
sqoop import -D sqoop.hbase.insert.put.transformer.class="com.zeta.wxh.sqoop.hbaseRowkey.RowkeyAddMD5" \
--connect "jdbc:oracle:thin:@//10.79.0.25:1521/mdwymsdb" --username "mdwadm" --password "mdwadm1234" \
--query 'SELECT A AS ROWKEY,A,B,C,D FROM TEST1 where 1=1 and $CONDITIONS' \
--hbase-create-table --hbase-table "MDW:TEST" --column-family CF --hbase-row-key 'ROWKEY' \
--class-name test --outdir /tmp/test --bindir /tmp/test \
--split-by "A" --num-mappers 1