Sqoop面试题及答案 - [ Java技术面试题 ]

Sqoop面试题及答案

Apache Sqoop是一种有效的hadoop工具,用于将数据从RDBMS(如MySQL,Oracle等)导入到HBase,Hive或HDFS中。 Sqoop hadoop还可以用于将数据从HDFS导出到RDBMS。

1. Sqoop是什么?

Sqoop-“SQL to Hadoop and Hadoop to SQL”(翻译:从SQL到Hadoop和从Hadoop到SQL)Apache Sqoop是一种有效的hadoop工具,用于将数据从RDBMS(如MySQL,Oracle等)导入到HBase,Hive或HDFS中。 Sqoop hadoop还可以用于将数据从HDFS导出到RDBMS。 Apache Sqoop是一个命令行解释器,即Sqoop命令一次由解释器执行。详细答案>>

2. Sqoop有哪些不同功能/特性?

下面是Sqoop支持的功能列表: 满载和增量加载;数据压缩技术;导入SQL查询结果;所有主要数据库的数据连接器;直接将数据加载支持到Hadoop文件系统中;安全配置,例如Kerberos;并发导入或导出功能;详细答案>>

3. 列举一些Sqoop导入控制命令?

导入控制命令用于导入RDBMS数据

Append:将数据追加到HDFS中的现有数据集。
Columns:要从表中导入的列。
Where:在导入期间使用的where子句。

详细答案>>

4. Sqoop如何处理大对象?

常见的大型对象是Blog和Clob,假设对象小于16 MB,则与其余数据一起内联存储。 如果有大对象,则将它们临时存储在名为_lob的子目录中。 这些数据然后在存储器中实现以进行处理。 如果我们将lob limit设为零(0),则它将存储在外部存储器中。详细答案>>

5. 如何在Sqoop中导入BLOB和CLOB等大型对象?

对于CLOB和BLOB对象,Sqoop不支持直接导入功能。 因此,如果必须导入大型对象,则可以使用基于JDBC的导入。 无需引入import实用程序的直接参数即可完成此操作。

详细答案>>

6. 使用Apache Sqoop导入数据的默认文件格式是什么?

Sqoop允许使用两种文件格式导入数据。它们如下: 分隔文本文件格式序列文件格式 分隔文本文件格式:这是使用Sqoop导入数据的默认文件格式。 可以使用Sqoop中import命令的–as-textfile参数明确指定此文件格式。 将其作为参数传递给命令将在输出文件中产生所有记录的基于字符串的表示形式,并在行和列之间使用定界字符。 序列文件格式:这是一种二进制文件格式,其中记录以特定于记录的定制数据类型存储,这些数据类型显示为Java类。 Sqoop自动创建这些数据类型并将其显示为java类。详细答案>>

7. Sqoop工作原理是怎么样的?

下图显示了Sqoop的工作流程: Sqoop导入导入工具将单个表从RDBMS导入到HDFS。 表中的每一行都被视为HDFS中的一条记录。 所有记录都作为文本数据存储在文本文件中,或者作为二进制数据存储在Avro和Sequence文件中。 Sqoop导出导出工具将一组文件从HDFS导出回RDBMS。 作为Sqoop输入的文件包含记录,这些记录称为表中的行。 读取这些记录并将它们解析为一组记录,并使用用户指定的定界符定界。详细答案>>

8. 学习Apache Sqoop的前提条件是什么?

要学习Apache Sqoop,需要基本的核心Java知识,SQL的数据库概念,Hadoop文件系统以及任何Linux操作系统版本。

详细答案>>

9. Sqoop导入使用什么语法?

以下语法用于Sqoop导入:

$ sqoop import (generic-args) (import-args)
详细答案>>

10. Sqoop导出使用什么语法?

以下语法用于Sqoop导出:

$ sqoop export (generic-args) (export-args)
详细答案>>

11. Sqoop中支持的关系数据库有哪些?

Sqoop当前支持的关系数据库有:

  • MySQL
  • PostgreSQL
  • Oracle
  • MSSQL
  • Teradata
  • IBM的Netezza作为关系数据库的一部分。

Sqoop使用MySQL作为默认数据库。

详细答案>>

12. Sqoop支持哪些Hadoop生态系统资源?

当前支持的Hadoop生态系统目标服务是:

  1. HDFC
  2. Hive
  3. HBase
  4. H Catalog
  5. Accumulo
详细答案>>

13. Sqoop的主要功能是什么?

Sqoop有4个主要关键功能: 批量导入:Sqoop可以将单个表或整个数据库导入HDFS。 数据存储在HDFS文件系统的本机目录和文件中。 直接输入:Sqoop可以将SQL(关系)数据库直接导入和映射到Hive和HBase。 数据交互:Sqoop可以生成Java类,以便您可以通过编程方式与数据进行交互。 数据导出:Sqoop可以使用基于目标数据库详细信息的目标表定义将数据直接从HDFS导出到关系数据库中。详细答案>>

14. JDBC驱动程序在Sqoop设置中的作用是什么?

要连接到不同的关系数据库,sqoop需要一个连接器。 几乎每个数据库供应商都可以将该连接器用作特定于该数据库的JDBC驱动程序。 因此,Sqoop需要与之交互的每个数据库的JDBC驱动程序。

详细答案>>

15. JDBC驱动程序是否足以将sqoop连接到数据库?

不能。Sqoop同时需要JDBC和连接器才能连接到数据库。

详细答案>>

16. 何时在导入数据时使用–target-dir和何时使用–warehouse-dir

要在HDFS中指定特定目录,请使用–target-dir,但要指定所有sqoop作业的父目录,请使用–warehouse-dir。 在这种情况下,sqoop将在父目录下创建一个与表同名的目录。

详细答案>>

17. Apache Sqoop是否具有默认数据库?

有,MySQL是默认数据库。

详细答案>>

18. 如何使用Apache Sqoop列出表的所有列?

与sqoop-list-tables和sqoop-list-databases不同,没有像sqoop-list-columns这样的直接命令来列出所有列。 实现此目的的间接方法是检索所需表的列并将其重定向到一个文件,该文件可以手动查看,其中包含特定表的列名。 Sqoop import –m 1 –connect ‘jdbc: sqlserver: //nameofmyserver; database=nameofmydatabase; username=DeZyre; password=mypasswo...详细答案>>

19. 如何从特定的行或列导入数据?

Sqoop允许根据where子句从数据表中导出和导入数据。 语法是: –columns –where –query 示例: sqoop import –connect jdbc:mysql://db.one.com/corp –table INTELLIPAAT_EMP –where “start_date> ’2016-07-20’ ” sqoopeval –connect jdbc:mysql://db.test.com/corp –query “SELECT * FROM intellip...详细答案>>

20. Sqoop import命令中允许的目标类型是什么?

Sqoop支持将数据导入以下服务:

  • HDFS
  • Hive
  • Hbase
  • Hcatalog
  • Accumulo
详细答案>>

21. 在导入数据时何时使用–target-dir和何时使用–warehouse-dir

Warehouse-dir指向要导入数据的Hive文件夹(在批量导入表时使用),而通过查询导入到Hive(sqoop错误要求)时,需要–target-dir。在后一种情况下,它用作映射器的临时区域,后跟LOAD INPATH。(要么)即 我们使用–target-dir在HDFS中指定特定目录。 而我们使用–warehouse-dir指定所有sqoop作业的父目录。 因此,在这种情况下,sqoop将在父目录下创建一个与表同名的目录。详细答案>>

22. Sqoop与Hadoop中的distcp类似吗?

distCP(Hadoop中的分布式副本)和Sqoop都并行传输数据,但是唯一的区别是distCP命令可以将任何类型的数据从一个Hadoop群集传输到另一个Hadoop群集,而Sqoop则在RDBMS和Hadoop生态系统中的其他组件(例如HBase, Hive, HDFS等)之间传输。详细答案>>

23. Sqoop如何在Java程序中使用?

可以通过在类路径中包含sqoop jar并调用Sqoop.runTool()方法,从Java代码内部运行sqoop。 就像命令行一样,必须以编程方式为Sqoop创建必要的参数。

详细答案>>

24. 如何使用Sqoop检查单个数据库中存在的所有表?

使用Sqoop检查单个数据库中存在的所有表的列表的命令如下-

Sqoop list-tables –connect jdbc: mysql: //localhost/user;
详细答案>>

25. 如何使用sqoop实施全部或全部加载?

根据Sqoop用户指南,为了对RDMS执行all-or-nothing加载,可以使用登台表。 然后,只有在临时加载成功后,才将其加载到最终目标表中。 但是,此选项似乎仅在出口中可用。 当执行从HDServer的导入(从SQLServer导入)时,选项–staging-table不存在。详细答案>>

26. 为了防止在sqoop import子句中提及密码,可以使用哪些参数?

-P选项从标准输入中询问密码而不回显,而–password-file选项读取存储在其他文件中的密码值。

详细答案>>

27. Sqoop使用什么压缩机制?

Sqoop没有任何内置代码来执行文件压缩。 它依赖Hadoop的压缩设置。

详细答案>>

28. 如何使用Oozie安排一份临时作业?

Oozie具有内置的sqoop动作,我们可以在其中提及要执行的sqoop命令。

详细答案>>

29. 如何不使用where子句从表中导入行的子集?

我们可以在数据库上运行过滤查询,并将结果保存到数据库中的临时表中。

然后,使用sqoop import命令而不使用–where子句。

详细答案>>

30. 使用–compress参数从sqoop导入生成的文件的默认扩展名是什么?

使用–compress参数从sqoop导入生成的文件的默认扩展名是:.gz

详细答案>>

31. 在阻止sqoop import语句中显示密码的同时,使用–password-file而不是-P选项有什么好处?

-password-file选项可在sqoop脚本内使用,而-P选项可从标准输入中读取,从而防止自动化。

详细答案>>

32. 如何将导出的表与删除了某些行的HDFS数据同步?

截断目标表并再次加载它。

详细答案>>

33. 在Sqoop中输入自由格式是什么?

Sqoop可以使用任何SQL查询而不是仅使用表名和列名以及参数从关系数据库中导入数据。

详细答案>>
注: 此试题仅作为相关知识水平测试,不能作为权威试题和答案。非商业转载注明原文链接即可;商业转载需本站授权同意。