文章目录
-
-
- 问题1、在hive中如何处理小文件合并问题
- 问题2、hive的存储格式,以及压缩算法
- 问题3、是用什么ETL工具进行hive中数据的ETL
- 问题4、如何保证hive中数据的质量
- 问题5、hive数据仓库的设计,项目中分了几层,每层有什么意义
- 问题6、hive优化经验
- 问题7、hive数据仓库中的建模方式,为什么选择这种建模方式
- 问题8、分布式数据仓库的整体组织结构
- 问题9、数据仓库如何同步,使用什么工具,根据什么进行实时同步
- 问题10、使用了哪些UDF函数?实现什么功能
- 问题11、根据什么对hive表进行分桶分区,为什么
- 问题12、如何确定起始来源数据?是否有做过元数据管理
- 问题13、什么是数据仓库,数据集市、事实表、维度表、OLAP
- 问题14、hive和mysql的区别
- 问题15、有没有用过开窗函数,例如 row number, partition by
- 问题16、自定义函数写过哪些,UDF,UDAF, UDTF
- 问题17、Hive调优
- 问题18、Hive发生数据倾斜,怎么处理
- 问题19、Hive数仓,如何实现 update delete 数据
- 问题20、Sort by , Order by, Cluster By, distribute By 各代表什么
- 问题21、用hive_sql编写计算7日留存的算法
- 问题22、Count(distinct) 和先 groupby 后 count 有什么区别?
-
问题1、在hive中如何处理小文件合并问题
- 有时候为了避免小文件合并,我们会设置小文件合并
set mapred.max.split.size=112345600;
set mapred.min.split.size.per.node=112345600;
set mapred.min.split.size.per.rack=112345600;
set hive.input.format= org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
- 这个参数表示执行前进行小文件合并,前面三个参数确定合并文件块的大小,大于文件块大小128m的,按照128m来分隔,小于128m,大于100m的,按照100m来分隔,把那些小于100m的(包括小文件和分隔大文件剩下的),进行合并
问题2、hive的存储格式,以及压缩算法
- hive的数据存储格式主要有:TEXTFILE(行式存储)、SEQUENCEFILE(行式存储)、ORC(列式存储)、PARQUET(列式存储)
- 列式存储相对行式存储来说,它的数据压缩效率更高
- ORC存储指定压缩方式有one of NONE(无压缩)、ZLIB、SNAPPY
- hive表的数据存储格式一般选择:orc或parquet。压缩方式一般选择snappy。
问题3、是用什么ETL工具进行hive中数据的ETL
问题4、如何保证hive中数据的质量
1.从技术层面上:构建一套高效、健壮的ETL程序去保证数据清洗、装换后数据的正确性和一致性;
2.从流程层面上:整个ETL是多个任务的,按步骤顺序执行的一个过程,后置任务依赖前置任务,定期执行,整个流程需要自动化,并且那个环节出现了问题,给予预警,通知相关维护人员及时处理;
3.从管理层面上:数据仓库构建在公司各个业务系统之上,它是一面镜子,很多时候它能反映出业务系统的问题,所以需要管理层的支持和约束。
https://blog.csdn.net/LwpHelloWorld/article/details/100146696
问题5、hive数据仓库的设计,项目中分了几层,每层有什么意义
- 分三层:源数据层、数据仓库层、数据应用层
源数据层(ODS)
:此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。数据仓库层(DW)
:也称为细节层,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。数据应用层(DA或APP)
:前端应用直接读取的数据源;根据报表、专题分析需求而计算生成的数据。
问题6、hive优化经验
Hadoop参数调优
一、 hdfs-site.xml 配置文件
1、 dfs.blocksize
参数:hadoop文件块大小
描述:新文件的默认块大小,以字节为单位,默认 134217728 字节。
可以使用以下后缀(大小写不敏感):k(kilo)、m(mega)、g(giga)、t(tera)、p(peta)、e(exa)来指定大小(如128k、512m、1g等),
或者以字节为单位提供完整的大小。
2、 dfs.namenode.handler.count
参数:namenode的服务器线程数
描