Sqoop(SQL-to-Hadoop)是一个开源工具,旨在将关系型数据库中的数据导入到Hadoop的HDFS中,或者从HDFS导出到关系型数据库中。以下是一些常用的Sqoop命令:
导入数据到HDFS
1. 基本导入
sqoop import \
--connect jdbc:mysql://hostname:port/dbname \
--username username \
--password password \
--table tablename \
--hive-import \
--delete-target-dir
这个命令将整个表导入到HDFS中,并且如果目标目录已存在,将删除目标目录。
2. 导入表的特定列
sqoop import \
--connect jdbc:mysql://hostname:port/dbname \
--username username \
--password password \
--table tablename \
--fields-terminated-by ',' \
--fields-enclosed-by '"' \
--fields-escaped-by '\\' \
-m 1
这个命令导入表的特定列,并且使用逗号分隔字段。
3. 导入查询结果
sqoop import \
--connect jdbc:mysql://hostname:port/dbname \
--username username \
--password password \
--query 'SELECT * FROM tablename WHERE \$CONDITIONS' \
--split-by id_column \
--target-dir /user/hive/warehouse/imported_table \
--fields-terminated-by ',' \
--fields-enclosed-by '"' \
--fields-escaped-by '\\' \
-m 1
这个命令导入查询结果,并且使用`--split-by`选项进行并行导入。
导出数据到关系型数据库
1. 基本导出
sqoop export \
--connect jdbc:mysql://hostname:port/dbname \
--username username \
--password password \
--table tablename \
--export-dir /user/hive/warehouse/imported_table \
--input-fields-terminated-by ',' \
--input-fields-enclosed-by '"' \
--input-fields-escaped-by '\\' \
-m 1
这个命令将HDFS中的数据导出到关系型数据库的表中。
2. 更新数据库表
sqoop export \
--connect jdbc:mysql://hostname:port/dbname \
--username username \
--password password \
--table tablename \
--export-dir /user/hive/warehouse/imported_table \
--update-key id_column \
--update-mode allowinsert \
-m 1
这个命令更新数据库表,只更新匹配`--update-key`指定的列的行。
其他常用命令
1. 代码生成
sqoop codegen \
--connect jdbc:mysql://hostname:port/dbname \
--username username \
--password password \
--table tablename \
--bindir /path/to/generate/code
这个命令生成Java类,用于在MapReduce作业中使用。
2. 创建Hive表
sqoop create-hive-table \
--connect jdbc:mysql://hostname:port/dbname \
--username username \
--password password \
--table tablename \
--hive-import \
--delete-target-dir
这个命令创建Hive表,并导入数据。
3. 查看表结构
sqoop eval \
--connect jdbc:mysql://hostname:port/dbname \
--username username \
--password password \
--table tablename \
--query 'DESCRIBE tablename'
这个命令查看表的结构。
4. 测试连接
sqoop test-connection \
--connect jdbc:mysql://hostname:port/dbname \
--username username \
--password password
这个命令测试与数据库的连接。