文章目录

  • 前言
  • 一、介绍
    • 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的集成,用户可以更方便地管理和处理导入的数据。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

参考链接:

03-06 04:51