文章目录
- 前言
- 一、介绍
- 1. sqoop简介
- 2. sqoop import的作用
- 3. 语法
- 3.1 sqoop import 语法
- 3.2 导入配置属性
- 二、导入参数
- 1. 常见参数
- 2. 验证参数
- 3. 导入控制参数
- 4. 用于覆盖映射的参数
- 5. 增量导入参数
- 6. 输出行格式参数
- 7. 输入解析参数
- 8. Hive 参数
- 9. HBase 参数
- 10. Accumulo 参数
- 11. 代码生成参数
- 三、Sqoop-HCatalog
- 1. 介绍
- 2. HCatalog 参数
- 3. HCatalog 支持的 Hive 参数
- 4. HCatalog 不支持的参数
- 四、应用示例
- 1. 从SQL server导入数据到Hive
- 2. 从Oracle导入数据到Hive
- 总结
前言
本文介绍了Sqoop工具的基本概念、使用方法和常见参数,以及Sqoop与HCatalog的集成。Sqoop是一个用于在Hadoop和关系型数据库之间传输数据的工具,可以方便地将关系型数据库中的数据导入到Hadoop生态系统中的HDFS或Hive中。通过Sqoop的导入功能,用户可以选择全表导入或增量导入模式,并可以使用各种参数来控制导入的行为。此外,本文还介绍了Sqoop与HCatalog的集成,HCatalog是Hadoop生态系统中的一个表和存储管理服务,可以为Sqoop提供更多的数据处理和管理功能。
一、介绍
1. sqoop简介
Sqoop是一个用于在Apache Hadoop和关系型数据库之间传输数据的工具。它允许用户将结构化数据从关系型数据库(如MySQL、Oracle、PostgreSQL等)导入到Hadoop生态系统中的Hadoop分布式文件系统(HDFS)或Hive中,并且可以将数据从HDFS或Hive导出到关系型数据库中。
2. sqoop import的作用
sqoop import用于从关系型数据库中导入数据到Hadoop生态系统中。它支持全表导入和增量导入两种模式。全表导入将整个表的数据导入到HDFS或Hive中,而增量导入只导入源数据库中新增或更新的数据。
3. 语法
3.1 sqoop import 语法
sqoop import (泛型参数) (导入参数)
3.2 导入配置属性
可以在命令行的泛型参数中指定导入配置属性。
sqoop import -D property.name=property.value ...
二、导入参数
1. 常见参数
2. 验证参数
3. 导入控制参数
4. 用于覆盖映射的参数
5. 增量导入参数
6. 输出行格式参数
7. 输入解析参数
8. Hive 参数
9. HBase 参数
10. Accumulo 参数
11. 代码生成参数
三、Sqoop-HCatalog
1. 介绍
HCatalog是Hadoop生态系统中的一个表和存储管理服务,它为用户提供了在Hadoop集群上读取和写入数据的便利性。HCatalog的设计目标是为使用不同数据处理工具(如Pig、MapReduce和Hive)的用户提供一个统一的接口,使他们能够更轻松地处理分布式数据。
HCatalog通过提供表的抽象概念,向用户展示了Hadoop分布式数据的关系视图。它将底层的文件系统(如HDFS)中的数据组织成表的形式,并隐藏了数据的存储细节,使用户无需关心数据存储在何处以及数据的存储格式(如RCFile、文本文件或序列文件)。
HCatalog支持读取和写入Hive所支持的任何文件格式,这得益于它使用了序列化器-反序列化器(SerDe)。默认情况下,HCatalog支持RCFile、CSV、JSON和SequenceFile格式的文件。如果需要使用自定义的文件格式,用户需要提供相应的InputFormat和OutputFormat以及SerDe。
HCatalog的能力可以抽象各种存储格式,这也使得它能够为其他工具提供支持。例如,HCatalog可以为Sqoop提供RCFile(以及未来的文件类型)的支持,使得Sqoop能够更方便地与HCatalog集成,实现数据的导入和导出操作。
总而言之,HCatalog是一个在Hadoop生态系统中提供表和存储管理服务的组件,它简化了用户对分布式数据的处理,提供了统一的接口和抽象,使得用户可以更轻松地读取和写入数据,而无需关心底层数据的存储细节和格式。
在HCatalog作业中,以下选项将被忽略:
- 所有输入分隔符选项都会被忽略。
- 输出分隔符通常会被忽略,除非使用了
--hive-delims-replacement
或--hive-drop-import-delims
选项。当指定了--hive-delims-replacement
选项时,所有类型的数据库表列将被后处理,以删除或替换分隔符。这仅在HCatalog表使用文本格式时才需要。
2. HCatalog 参数
3. HCatalog 支持的 Hive 参数
4. HCatalog 不支持的参数
四、应用示例
1. 从SQL server导入数据到Hive
sqoop import \
--connect "jdbc:sqlserver://ip:port;database=db_name" \
--username sqlserver_username \
--password sqlserver_password \
--query "select * from sqlserver_table where \$CONDITIONS" \
--hcatalog-database hive_database_name \
--hcatalog-table hive_table_name \
--fields-terminated-by '\0001' \
--lines-terminated-by '\n' \
--hive-drop-import-delims \
--null-string '\\N' \
--null-non-string '\\N' \
-m 1
2. 从Oracle导入数据到Hive
sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
--connect "jdbc:oracle:thin:@ip:port:oracle_database_name" \
--username oracle_username \
--password oracle_password \
--query "select * from oracle_table_name where \$CONDITIONS" \
--hcatalog-database hive_database_name \
--hcatalog-table hive_table_name \
--hcatalog-partition-keys 'year,month' \
--hcatalog-partition-values '2019,03' \
--fields-terminated-by '\0001' \
--lines-terminated-by '\n' \
--hive-drop-import-delims \
--null-string '\\N' \
--null-non-string '\\N' \
-m 1
总结
本文详细介绍了Sqoop工具的导入功能和常见参数,以及Sqoop与HCatalog的集成。通过Sqoop的导入功能,用户可以方便地将关系型数据库中的数据导入到Hadoop生态系统中,并可以使用各种参数来控制导入的行为。同时,通过与HCatalog的集成,用户可以更方便地管理和处理导入的数据。
希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!
参考链接: