sqoop 使用

安装配置好之后,就可以使用啦。注意,需要自己将jdbc的jar包放到sqoop的lib目录下。

1.将数据从sqlserver导出到hdfs:

 sqoop import --connect 'jdbc:sqlserver://192.168.68.90:1433;username=sa;password=sa;database=Feedback' --table user_info  --split-by 'id'   --fields-terminated-by ‘\t’  --warehouse-dir /Feedback

导出的结果存在了hdfs的:

 /Feedback/user_info/ part-m-00000

 /Feedback/user_info/ part-m-00001

 /Feedback/user_info/ part-m-00002

 /Feedback/user_info/ part-m-00003

 

等文件中,文件的内容为:

1\tabc
2\tsdfasdf
3\tzhangsan
4\tlisi

其实\t是不可见字符,为了描述出来,我就将它写了出来,在浏览hdfs的文件的时候,是看不到它的。

 

这个脚本中带了一个参数:

 --split-by 'id'

这个'id'是表的主键,如果该表没有主键,则不能使用并行导入,需要指定并行导入的任务数为1:

  --m 1

官方是这么解释的:

-m,--num-mappers <n>     Use n map tasks to import in parallel

 

导入的脚本就得这么写了:

sqoop import --connect 'jdbc:sqlserver://192.168.68.90:1433;username=sa;password=sa;database=Feedback' --table user_info  --fields-terminated-by '\t' -m 1  --warehouse-dir /Feedback

 

这样的job的map数只有1.所以输出文件也就只有一个了。

 

 

 

 

 

 

### Sqoop使用方法与教程 #### 1. 基本概念 Sqoop 是一种用于在关系型数据库(RDBMS)和 Hadoop 生态系统之间传输数据的工具。它可以高效地将大规模结构化数据从 RDBMS 导入到 HDFS 中,也可以反向操作,即将 HDFS 数据导出至 RDBMS。 --- #### 2. 安装与配置 安装 Sqoop 需要先准备好 Java 和 Hadoop 环境。以下是基本步骤: - 下载并解压 Sqoop 发行版。 - 设置环境变量 `SQOOP_HOME` 并将其加入 PATH。 - 配置 JDBC 驱动程序路径以便连接目标数据库。 --- #### 3. 连接数据库的基本命令 以下是一个典型的 Sqoop 导入命令示例: ```bash sqoop import \ --connect jdbc:mysql://<hostname>:<port>/<database_name> \ --username <db_username> \ --password <db_password> \ --table <table_name> \ --target-dir <hdfs_target_directory> ``` 此命令的作用是从指定的关系型数据库中提取数据,并存储到 HDFS 上的目标目录下[^1]。 --- #### 4. 实现增量导入 为了仅导入新增的数据,可以使用 Sqoop 提供的增量模式功能。例如: ```bash sqoop job --create my_incremental_job \ -- import --connect jdbc:mysql://bigdata01:3306/sqoop \ --username root \ --password 123456 \ --table sales_order \ --driver com.mysql.cj.jdbc.Driver \ --target-dir /home/sales_order/dt=YYYYMMDD \ --split-by orderId \ -m 1 \ --check-column orderId \ --incremental append \ --last-value 0 \ --fields-terminated-by '\t' ``` 在此例子中,`--incremental append` 表明我们希望追加新记录,而 `--last-value` 参数指定了上次导入的最大值作为起点[^2]。 --- #### 5. 自定义字段分隔符 如果需要调整文件格式,默认情况下 Sqoop 将列间用逗号分隔。可以通过参数修改这一行为: ```bash sqoop import ... --fields-terminated-by '|' ... ``` 这会使输出文件中的每一列都以竖线字符 (`|`) 分割。 --- #### 6. Hive 集成 若想直接将数据加载到 Hive 表中,则需增加额外选项: ```bash sqoop import ... --hive-import --hive-table <hive_table_name> ... ``` 注意,在运行该指令前应确保已创建对应的 Hive 表结构[^3]。 --- #### 7. 性能优化建议 由于 Sqoop 的性能依赖于底层数据库以及网络状况等因素,因此推荐采取如下措施来提升效率: - 合理设置并发度 `-m` 参数; - 对大表启用压缩编码; - 如果可能的话,避免频繁的小规模作业提交[^4]。 --- #### 8. 错误排查技巧 遇到问题时可尝试以下几种方式定位原因: - 查看日志文件寻找异常堆栈信息; - 测试单独建立数据库链接是否正常工作; - 减少复杂程度重新验证基础流程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值