第9章课后习题答案
一、选择题
1. 下列语句中,描述错误的是(  ) 。
A.可以通过 CLI 方式、Java Api 方式调用 Sqoop。
B.Sqoop 底层会将 Sqoop 命令转换为 MapReduce 任务,并通过 Sqoop 连接器进行数据的导入导出操作。
C.Sqoop 是独立的数据迁移工具,可以在任何系统上执行。
D.如果在 Hadoop 分布式集环境下,连接 MySQL 服务器参数不能是“ localhost” 或“127. 0. 0. 1” 。   
参考答案:C
2. 下列选项中,属于 Sqoop 命令的参数有() 。
A. import  B. output    C. input    D. export
参考答案:AD
二、判断题
1. Sqoop 工具的使用,依赖 Java 环境和 Hadoop 环境。 (  )
参考答案:对
2. Sqoop 从 Hive 表导出 MySQL 表时,首先需要在 MySQL 中创建表结构。 (    )
参考答案:对
3. 如果没有指定“ --num-mappers 1”( 或“ -m 1”,即 Map 任务个数为“1”),那么在命令中必须还要添加“ --split-by” 参数。 (  )
参考答案:对
4. 如果指定了“ \n” 为 Sqoop 导入的换行符,当 MySQL 的某个 string 字段的值如果包含了“ \n
”, 则会导致 Sqoop 导入多出一行记录。 (    )
参考答案:对
5. 在导入开始之前,Sqoop 使用 JDBC 来检查将要导入的表,检索出表中所有的列以及列的 SQL 数据类型。 (    )
参考答案:对
6. merge 是将两个数据集合并的工具,对于相同的 value 会覆盖新值。 (    )
参考答案:错
7. metastore 文件的存储位置可以通过“conf / sqoop-site. xml” 配置文件修改。 (    )
参考答案:对
8. $CONDITIONS相当于一个动态占位符,动态的接收传过滤后的子集数据,然后让每个Map任务执行查询的结果并进行数据导入。(  )
参考答案:对
9. Sqoop 导出操作之前,目标表必须存在于目标数据库中,否则在执行导出操作时会失败。 (    )
参考答案:对
10. Sqoop 中“ --where” 与“ --query” 命令都是数据过滤,“ --query” 是通过指定的查询语句查询出子集数据,然后再将子集数据进行导入。 (  )
参考答案:对
11. Sqoop 增量导入的新结果文件只会将指定值后的数据添加到结果文件中。 (  )
参考答案:对
12. 为了使用严谨,Sqoop 在导入数据时,必须要用字段分隔符号和行分隔符号。 (    )
参考答案:对
13. --target-dir” 参数是指定 HDFS 目标目录地址, 因此, 需要提前创建目标文件。(    )
参考答案:错
14. Sqoop 导出与导入是相反的操作,也就是将关系型数据库中的数据导入到 HDFS 文件系统中。 (  )
参考答案:错
15. Sqoop 可以将命令转换为对应的 MapReduce 作业,然后将关系型数据库和 Hadoop 中的数据进行相互转换,从而完成数据的迁移。 (    )
参考答案:对
16. 使用“ --create-hive-table” 命令导入数据时,Hive 数据仓库中必须存在指定表。 (    )
参考答案:错
17. --where " city = 'sec-bad'" ” 命令表示筛选出 MySQL 数据库表字段为 city = sec-bad 的数据。 (    )
参考答案:对
18. codegen 参数用于将关系数据库表映射为一个 Java 文件、Java class 类以及相关的 jar包。 (  )
参考答案:对
19. Sqoop 导入数据时,可以通过“ --m n” 设置并行数,最终会在 HDFS 中产生 n 个文件。(  )
参考答案:对
20. Sqoop 是关系型数据库与 Hadoop 之间的数据桥梁,这个“ 桥梁” 的重要组件是 Sqoop连接器。 (  )
参考答案:对
三、填空题
1.如果使用Sqoop工具将MySQL表数据导入Hive数据仓库中,需要在“sqoop-env.sh”配置文件中配置____________
参考答案:Hive的安装路径
2.在Sqoop增量导入时,如果要导入指定ID后的数据内容,需要添加的命令为____________
参考答案:--last-value
3.Sqoop底层利用____________mysql数据库迁移命令技术以批处理方式加快了数据传输速度,并且具有较好的容错性功能。
参考答案:MapReduce
4.在部署Sqoop时,需要在“sqoop-env.sh”配置文件中添加_________环境。
参考答案:Hadoop
5.Sqoop命令中,导入操作为___________,导出操作为export
参考答案:import
6.从数据库导入HDFS时,指定以制表符作为字段分隔符参数为____________
参考答案:--fields-terminated-by '\t'
7.Sqoop连接器用于实现与各种关系型数据库的连接,从而实现数据的_________和导出操作。
参考答案:导入
8.进行增量导入操作时,必须指定___________参数,用来检查数据表列字段,从而确定哪些数据需要执行增量导入。
参考答案:--check-column
9.Sqoop主要用于在__________和关系型数据库之间进行传输数据。
参考答案:Hadoop
10.利用Sqoop针对MySQL数据库进行数据前移工作时,需要将__________复制到Sqoop路径下的lib文件夹下。
参考答案:MySQL连接驱动
11.Sqoop目前支持两种增量导入模式,分别是__________和lastmodified模式。
参考答案:append模式
12.Sqoop数据导入(import)是将关系型数据库中的单个表数据导入到具有_________的文件系统中。
参考答案:Hadoop分布式存储结构
13.使用___________命令可以查看Sqoop命令的用法。
参考答案:help
14.如果想要将整个数据库中的表全部导入到HDFS,可以使用___________命令。
参考答案:import-all-tables
四、简答题
1. 简述 append 模式和 lastmodified 模式的区别。
参考答案:append模式主要针对INSERT新增数据的增量导入;lastmodified模式主要针对UPDATE数据的增量导入。
2. 简述“ --hive-table itcast. emp” 命令的含义。
参考答案:用于指定上传到Hive上的目标地址为itcast数据仓库的emp表中。
3. 简述 Sqoop 导入与导出数据工作原理。
参考答案:在导入数据之前,Sqoop使用JDBC检查导入的数据表,检索出表中的所有列以及列的SQL数据类型,并将这些SQL类型映射为Java数据类型,在转换后的MapReduce应用中使用这些对应的Java类型来保存字段的值,Sqoop的代码生成器使用这些信息来创建对应表的类,用于保存从表中抽取的记录。
在导出数据之前,Sqoop会根据数据库连接字符串来选择一个导出方法,对于大部分系统来说,Sqoop会选择JDBC。Sqoop会根据目标表的定义生成一个Java类,这个生成的类能够
从文本中解析出记录数据,并能够向表中插入类型合适的值,然后启动一个MapReduce作业,从HDFS中读取源数据文件,使用生成的类解析出记录,并且执行选定的导出方法。
4. 简述“ --create-hive-table” 命令的含义。
参考答案:用于指定自动创建指定的目标Hive表。
5. 简述“ -hive-drop-import-delims” 命令的含义。
参考答案:删除数据中包含的Hive默认分隔符(^A, ^B, \n)
6. 简述将 Hive 数据仓库中的表数据导出 MySQL 中的操作步骤。
参考答案:(1)现在MySQL中创建与Hive具有相同字段的表结构。
2)执行export导出命令。
7. 简述“ --connect” 命令的含义。
参考答案:指定连接的关系型数据库,包括JDBC驱动名、主机名、端口号和数据库名称。
8. 简述“ --incremental append” 命令的含义。
参考答案:指定增量导入模式为append类型。
9. 请写出通过 Sqoop 查询出连接的 MySQL 数据库中的所有数据库名的命令参数。
参考答案:list-databases

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。