安装配置
第一步:下载安装包并上传(下载地址)
第二步:解压安装包(可以配置环境变量)
第三步:配置sqoop.env.sh(Sqoop文件结构和大部分框架类似,配置文件在conf目录下,将sqoop-env-template.sh修改为sqoop-env.sh)
第四步:拷贝JDBC驱动到lib目录下
第五步:配置完成,验证sqoop配置是否正确
bin/sqoop help
,可以正常输出帮助命令
sqoop list-databases --connect jdbc:mysql:/num01:3306/ --username root --password root
,这里需要配置自己的mysql配置信息(包括主机IP、端口、用户名和密码),同时确保mysql可以远程登陆。可以成功输出数据库列表说明sqoop可以顺利连接到mysql了。
基本操作
mysql数据导入到HDFS
bin/sqoop import \
--connect jdbc:mysql://num01:3306/bank \ # 指定连接的mysql的数据库名称
--driver com.mysql.jdbc.Driver \ # 指定驱动,可以不指定
--username root \ # mysql用户名
--password ok \ # mysql密码
--table user \ # 指定导出mysql数据库中的哪个表格
--target-dir /data/mysql/bank/user \ # 指定导出路径
--m 1 # 指定启用Mapreduce数量
导入时可以增加条件限定:--where "user_id<20"
导入到指定列:--columns "column1,column2,column3"
导入查询的结果:--query "select * from users where user_id<20 and \$CONDITIONS"
,$CONDITIONS时固定结尾,
导入的数据追加到文件中:
--incremental append
指定增量导入方式
--check-column column_name
指定递增的列
--last-value value
指定上一次导入递增列的最大值
导入时指定文件格式:--as-XXX
格式参数 | 文件类型 |
---|---|
textFile | 导入text类型文件(默认) |
avrodatafile | 导入avro类型文件 |
sequencefile | 导入sequence文件 |
parquetfile | 导入parquet文件 |
mysql数据导入到HIVE
bin/sqoop import \
--connect jdbc:mysql://num01:3306/bank \
--driver com.mysql.jdbc.Driver \
--username root \
--password ok \
--table user \ # 以上部分和导入到HDFS一样,指定MySQL参数
--hive-import \ # 通过hive-import导入到hive
--create-hive-table \ # 指定创建一个新的表格,如果表格已存在则会报错
--hive-database emp \ # hive中的数据库名称
--hive-table hive_user \ # hive中的表名称
--m 1
导入时指定分区:
--hive-partition-key key
:指定分区字段名
--hive-partition-value value
:指定分区字段名对应的值
只能导入指定分区,不能使用动态分区
mysql数据导入到HBASE
bin/sqoop import \
--connect jdbc:mysql://num01:3306/bank \
--driver com.mysql.jdbc.Driver \
--username root \
--password ok \
--table user \
--columns "col1,col2" \
--hbase-table user \ # 指定导入hbase中的表名
--column-family column_family \ # 指定列簇
--hbase-row-key row_key \ #指定rowkey
--m 1
HDFS数据导出到mysql
bin/sqoop export \ #指定方式为导出
--connect jdbc:mysql://num01:3306/bank \
--driver com.mysql.jdbc.Driver \
--username root \
--password ok \
--table user \ # 指定mysql中的表名
--export-dir /data/sqoop/emp \ # 指定要导出数据的HDFS文件路径
--m 1