sqoop面试题

1.1 Sqoop 在工作中的定位是会用就行
1.1.1 Sqoop导入数据到hdfs中的参数

  1. /opt/module/sqoop/bin/sqoop import \
  2. --connect \ # 特殊的jdbc连接的字符串
  3. --username \
  4. --password \
  5. --target-dir \ # hdfs目标的目录
  6. --delete-target-dir \ # 导入的目标目录如果存在则删除那个目录
  7. --num-mappers \ #相当于 -m ,并行导入时map task的个数
  8. --fields-terminated-by \
  9. --query "$2" ‘ and $CONDITIONS;‘ # 指定满足sql和条件的数据导入

1.1.2 Sqoop导入hive时的参数
一步将表结构和数据都导入到hive中

  1. bin/sqoop import \
  2. --connect jdbc的url字符串 \
  3. --table mysql中的表名\
  4. --username 账号 \
  5. --password 密码\
  6. --hive-import \
  7. --m mapTask的个数\
  8. --hive-database hive中的数据库名;

1.1.3 Rdbms中的增量数据如何导入?

  1. --check-column 字段名 \ #指定判断检查的依据字段
  2. --incremental 导入模式\ # 用来指定增量导入的模式(Mode),append和lastmodified
  3. --last-value 上一次导入结束的时间\
  4. --m mapTask的个数 \
  5. --merge-key 主键

补充:
·如果使用merge-key合并模式 如果是新增的数据则增加,因为incremental是lastmodified模式,那么当有数据更新了,而主键没有变,则会进行合并。
·--check-column字段当数据更新和修改这个字段的时间也要随之变化,mysql中建表时该字段修饰符,字段名timestamp default current_timestamp on update current_timestamp

1.1.4 Sqoop导入导出Null存储一致性问题
Hive中的Null在底层是以“\N”来存储,而MySQL中的Null在底层就是Null,为了保证数据两端的一致性,转化的过程中遇到null-string,null-non-string数据都转化成指定的类型,通常指定成"\N"。在导出数据时采用–input-null-string “\N” --input-null-non-string “\N” 两个参数。导入数据时采用–null-string “\N” --null-non-string “\N”。

Import导入和export导出的关系如下图所示。

1.1.5 Sqoop数据导出一致性问题
1)场景1:如Sqoop在导出到Mysql时,使用4个Map任务,过程中有2个任务失败,那此时MySQL中存储了另外两个Map任务导入的数据,此时老板正好看到了这个报表数据。而开发工程师发现任务失败后,会调试问题并最终将全部数据正确的导入MySQL,那后面老板再次看报表数据,发现本次看到的数据与之前的不一致,这在生产环境是不允许的。

Sqoop官网中的用户指南

使用—staging-table选项,将hdfs中的数据先导入到辅助表中,当hdfs中的数据导出成功后,辅助表中的数据在一个事务中导出到目标表中(也就是说这个过程要不完全成功,要不完全失败)。

为了能够使用staging这个选项,staging表在运行任务前或者是空的,要不就使用—clear-staging-table配置,如果staging表中有数据,并且使用了—clear-staging-table选项,sqoop执行导出任务前会删除staging表中所有的数据。

注意:–direct导入时staging方式是不可用的,使用了—update-key选项时staging方式也不能用。

  1. sqoop export \
  2. --connect url \
  3. --username root \
  4. --password 123456 \
  5. --table app_cource_study_report \
  6. --columns watch_video_cnt,complete_video_cnt,dt \
  7. --fields-terminated-by "\t" \
  8. --export-dir "/user/hive/warehouse/tmp.db/app_cource_study_analysi_${day}" \
  9. --staging-table app_cource_study_report_tmp \
  10. --clear-staging-table \
  11. --input-null-string ‘\\N‘ \
  12. --null-non-string "\\N"

2)场景2:设置map数量为1个(不推荐,面试官想要的答案不只这个)

多个Map任务时,采用–staging-table方式,仍然可以解决数据一致性问题。

1.1.6 Sqoop底层运行的任务是什么
只有Map阶段,没有Reduce阶段的任务。

1.1.7 Map task并行度设置大于1的问题
并行度导入数据的 时候 需要指定根据哪个字段进行切分 该字段通常是主键或者是自增长不重复的数值类型字段,否则会报下面的错误。

Import failed: No primary key could be found for table. Please specify one with --split-by or perform a sequential import with ‘-m 1’.

那么就是说当map task并行度大于1时,下面两个参数要同时使用

–split-by id 指定根据id字段进行切分

–m n 指定map并行度n个

1.1.8 Sqoop数据导出的时候一次执行多长时间
Sqoop任务5分钟-2个小时的都有。取决于数据量。

原文地址:https://www.cnblogs.com/sx66/p/12040534.html

时间: 2024-10-17 13:53:51

sqoop面试题的相关文章

2018年大数据面试题总结

目前面试了多家大数据开发工程师,成长了很多,也知道了很多知识,下面和大家分享一下我遇到的面试题和答案. 1.kafka集群的规模,消费速度是多少. 答:一般中小型公司是10个节点,每秒20M左右. 2.hdfs上传文件的流程. 答:这里描述的 是一个256M的文件上传过程 ① 由客户端 向 NameNode节点节点 发出请求 ②NameNode 向Client返回可以可以存数据的 DataNode 这里遵循机架感应原则 ③客户端 首先 根据返回的信息 先将 文件分块(Hadoop2.X版本 每一

117道有关大数据面试题解析,希望对你有所帮助

一 .简述如何安装配置apache 的一个开源的hadoop 使用root账户登陆 2.修改ip 3.修改host主机名 4.配置ssh 免密登陆 5.关闭防火墙 6.安装JDK 7.解压hadoop安装包 8.配置hadoop的核心配置文件 hadoop-env.sh? core-site.xml? mapred-site.xml yarn-site.xml hdfs-site.xml 9.配置hadoop 的环境变量 10 .格式化hadoop namenode-format 启动节点sta

117道有关大数据面试题的解析,希望对你有所帮助!

一 .简述如何安装配置apache 的一个开源的hadoop 使用root账户登陆 2.修改ip 3.修改host主机名 4.配置ssh 免密登陆 5.关闭防火墙 6.安装JDK 7.解压hadoop安装包 8.配置hadoop的核心配置文件 hadoop-env.sh? core-site.xml? mapred-site.xml yarn-site.xml hdfs-site.xml 9.配置hadoop 的环境变量 10 .格式化hadoop namenode-format 启动节点sta

2019最新JAVA学习路线-技术要点-面试题

——————————————————面试题———————————————————————————— 第一套 1.hadoop运行原理 包括HDFS和Mapreduce两部分. 1)HDFS自动保存多个副本,移动计算.缺点是小文件存取占用namenode内存,写入只支持追加,不能随机修改. 它存储的逻辑空间称为block,文件的权限类似linux.整体架构分三种节点,NN,SNN,DN NN 负责读写操作保存metadata(Ownership Permission blockinfo) SNN

解决sqoop报错Invalid number; item = ITEM_UNICODE

报错栈: java.sql.SQLException: Invalid number; item = ITEM_UNICODE at com.intersys.jdbc.SysList.getInt(SysList.java:1735) at com.intersys.jdbc.CacheResultSet.getInt(CacheResultSet.java:247) at org.apache.sqoop.lib.JdbcWritableBridge.readInteger(JdbcWrit

【转】嵌入式软件工程师经典笔试题

嵌入式软件工程师经典笔试题 > 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中 有多少秒而不是计算出实际的值,是更清晰而没有代价的. 3).

sqoop同步mysql到hdfs

链接:http://pan.baidu.com/s/1gfHnaVL 密码:7j12 mysql-connector version 5.1.32 若在安装版本过程遇到些问题,可参考http://dbspace.blog.51cto.com/6873717/1875955,其中一些问题的解决办法 下载并安装: cd /usr/local/tar -zxvf sqoop2-1.99.3-cdh5.0.0.tar.gzmv sqoop2-1.99.3-cdh5.0.0 sqoop添加sqoop2到系

10个常见的Node.js面试题

如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对Node.js的掌握程度. 本文就为你罗列了10个常见的Node.js面试题,分别考察了Node.js编程相关的几个主要方面. 在进入正文之前,需要提前声明两点: 这些问题只是Node.js知识体系的一个局部,并不能完全考察被面试者的实际开发能力. 对现实世界开发中遇到的问题,需要的是随机应变与团队合作,所以你可以尝试结对编程. Node.js面试题列表 什么是错误优先的回调函数? 如何避免回调地狱? 如何用Node来监听8

.NET教程:.NET 面试题之IEnumerable

.NET教程,今天给大家介绍的是:.NET 面试题之IEnumerable ,这是在面试的时候可能会碰到的一道题目,这道题的注解分为了两个部分,这一篇是第一部分! 什么是IEnumerable? IEnumerable及IEnumerable的泛型版本IEnumerable是一个接口,它只含有一个方法GetEnumerator.Enumerable这个静态类型含有很多扩展方法,其扩展的目标是IEnumerable. 实现了这个接口的类可以使用Foreach关键字进行迭代(迭代的意思是对于一个集合