Sqoop的安装
由于sqoop现在已经停止更新了, 版本只维持在1.4.7且支持的hadoop版本也停留在2.6.0, 所以需要下载两个版本,一个是集成好的sqoop-1.4.7.bin_hadoop-2.6.0.tar.gz, 另一个是纯净版sqoop-1.4.7.tar.gz. 具体的安装可以参考
注意问题
当出现
ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
错误的时候, 说明jdk的MBeanTrustPermission权限不够, 需要配置
- 修改jdk的文件$JAVA_HOME/jre/lib/security/java.policy具体配置如下:在文件中添加如下内容:
在grant {permission javax.management.MBeanTrustPermission “register”;};就可以解决了
具体使用方法
oracle导入hdfs
/home/software/sqoop-1.4.7/bin/sqoop import\
--connect jdbc:oracle:thin:@<oracle_host>:<port>:<sidname> \
--username user23 \
--password ********* \
--delete-target-dir\
--table T_SAL_ORDERENTRY_D \
--target-dir /user/hive/warehouse/ods_xhgj.db/ods_erp_salorderentry_d \
--num-mappers 1 \
--fields-terminated-by ','
mysql 导入hdfs
dfs
/home/software/sqoop-1.4.7/bin/sqoop import\
--connect jdbc:mysql://<mysql_host>:3306/<database_name> \
--username root \
--password ********* \
--delete-target-dir\
--table ads_fin_accountbalance \
--target-dir /data/logs \
--num-mappers 1 \
--null-string '\\N' \
--fields-terminated-by '\t'
oracle全量导入hive
/home/software/sqoop-1.4.7/bin/sqoop import\
--connect jdbc:oracle:thin:@<oracle_host>:<port>:<sidname> \
--username user23 \
--password ********* \
--table T_SAL_ORDERENTRY_D \
--hive-import \
--hive-database ods_xhgj \
--hive-table ODS_ERP_SALORDERENTRY_D \
--hive-overwrite \
--hive-drop-import-delims \
--null-string '\\N' \
--null-non-string '\\N' \
--fields-terminated-by ',' \
-m1
oracle 查询导入hdfs
oracle 查询导入hdfs
/home/software/sqoop-1.4.7/bin/sqoop import\
--connect jdbc:oracle:thin:@<oracle_host>:<port>:<sidname> \
--username user23 \
--password ********* \
--target-dir /user/hive/warehouse/ods_xhgj.db/ods_erp_salorderentry_d \
--delete-target-dir \
--hive-drop-import-delims \
--null-string '\\N' \
--null-non-string '\\N' \
--fields-terminated-by ',' \
-m1 \
--query 'SELECT FID,FENTRYID,FDELIVERYMAXQTY,FDELIVERYMINQTY,FDELIVERYCONTROL,FTRANSPORTLEADTIME,FPLANDELIVERYDATE,FDELIVERYDATE,FBASEDELIVERYMAXQTY,FBASEDELIVERYMINQTY,FOUTLMTUNIT,FOUTLMTUNITID,FISMRP from USER23.T_SAL_ORDERENTRY_D where $CONDITIONS'
介绍一下上方每个配置的作用:
--connect
: 指定要连接的数据库的连接字符串。需要根据你的实际情况替换为正确的数据库连接信息--username
: Oracle数据库的用户名--password
: Oracle数据库的密码--oracle_table
: 要导入的Oracle表名-
--target-dir
: 指定将数据导入到HDFS中的目标路径。 -
--target-dir
: 指定将数据导入到HDFS中的目标路径。 --hive_table
: 要创建的Hive表名-
--null-string
: 指定在数据中表示空值的字符串。在命令中,'\\N'
表示空值。 -
--null-non-string
: 指定非字符串类型的空值的表示方式。在命令中,'\\N'
表示非字符串类型的空值。 -
--fields-terminated-by
: 指定字段之间的分隔符。在命令中,字段分隔符是逗号(','
)。 -
--split-by
: 指定用于数据分片的列名。在命令中,'FID'
被指定为用于数据分片的列。 -
--query
: 指定要执行的查询语句。 -
--table
: 指定要导出数据的表名。 -
--hive-import
: 指定将数据导入到Hive中。 -
--hive-database
: 指定要导入数据的Hive数据库名称。 -
--hive-table
: 指定将数据导入到Hive中的表名称。 -
--hive-drop-import-delims
: 在导入数据到Hive表时删除分隔符。 -m1
: 指定只使用一个Mapper任务来执行数据导入, 如果指定为1,那么就不需要知道split-by