Sqoop常用参数及其使用

Sqoop的使用

1、 上传并解压

2、 修改sqoop/conf/sqoop=env.sh

分别输入hadoop,hadoop,hive,zookeeperconf的目录

3、 导入jdbc的jar包

4、 进入到sqoop/bin目录下

5、 从mysql到导入

(1)   mysql上传到hdfs


(2)   导入到hive中


注:如需指定hive的table名,需要添加--hive-table t_1

(3)   其他参数:

指定查询:

1)query

--query ‘selectid,name from t_1 where id<10 and $CONDITIONS’

--split-by‘id’   //以插入的哪一列作为主键

--target-dir‘/aa/bb’

2)columns

--columns ‘id,name’

3)where

--where ‘id>10’

         类型匹配:(把原来的类型转换成指定的类型)

--map-column-hive columnName=valueType

         空值转换:(把数据库中的”null”字符串替换成null)

--null-string'\\N' 

--null-non-string '\\N' 

         分隔符:

                   --lines-terminated-by‘\n’

                   --fields-terminated-by‘\t’

         封闭字符:(用于封闭每个字段的内容)

                   --enclosed-by”               //所有封闭

--optionally-enclosed-by ”        //选择性封闭

         增量导入:

                  

--check-column 
用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系型数据库中的自增字段及时间戳类似。
注意:这些被指定的列的类型不能使任意字符类型,如char、varchar等类型都是不可以的,同时–check-column可以去指定多个列。

--incremental 
用来指定增量导入的模式,两种模式分别为Append和Lastmodified

--last-value 

指定上一次导入中检查列指定字段最大值

--merge-key id

把id相同的数据汇总成一条数据,主要用于Lastmodified模式



例如:sqoop export --connect jdbc:mysql://192.168.80.11:3306/test \

--username root -P \

--export-dir ‘aa/bb’ \

----check-column ‘id’ \

--incremental append \

--last-value ‘5’

或者:

sqoop export --connectjdbc:mysql://192.168.80.11:3306/test \

--username root -P \

--export-dir ‘aa/bb’ \

----check-column ‘modifieddate’ \

--incremental lastmodified\

--last-value ‘2018-8-11 12:54’

但是这样会把所有时间大于2018-8-11 12:54的导入,包括修改的数据,所以就需要加入--merge-key id 这个选项,这样就变成了把id相同的数据汇总成一条数据。如下:

sqoop export --connectjdbc:mysql://192.168.80.11:3306/test \

--username root -P \

--export-dir ‘aa/bb’ \

----check-column ‘modifieddate’ \

--incremental lastmodified\

--last-value ‘2018-8-11 12:54’

--merge-key id


很详细的增量导入讲解https://blog.csdn.net/qq_26937525/article/details/53670213

6、 从hdfs(hive)导出

(1)   从hadf导出:

sqoop export --connect jdbc:mysql://192.168.80.11:3306/test \

--username root -P \

--export-dir ‘aa/bb’ \

--input-fields-terminated-by ‘,’

(2)   从hive导出:

sqoop export --connect jdbc:mysql://192.168.80.11:3306/test \

--username root -P \

--export-dir ‘aa/bb’ \            //hive源文件存在hdfs的路径

--input-fields-terminated-by ‘\001’

--input-lines-terminated-by ‘\n’

(3)   其他参数:

--update-mode allowinsert              //可以插入,可以更新

--update-key ‘id’                          //按照哪一列进行更新或者插入

猜你喜欢

转载自blog.csdn.net/yancychas/article/details/79171293
今日推荐