Sqoop安装配置和基本操作

  • 安装配置
  • 基本操作
  • mysql数据导入到HDFS
  • mysql数据导入到HIVE
  • mysql数据导入到HBASE
  • HDFS数据导出到mysql


安装配置

第一步:下载安装包并上传(下载地址)
第二步:解压安装包(可以配置环境变量)
第三步:配置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