1.大数据笔试真题集锦---第五章:Hive面试题
2.UE5.1卡通渲染管线修改 学习笔记(改源码版)
大数据笔试真题集锦---第五章:Hive面试题
我会不间断地更新维护,源码希望对正在寻找大数据工作的源码朋友们有所帮助。 第五章目录 第五章 Hive 5.1 Hive 运行原理(源码级) 1.1 reduce端join 在reduce端,源码对两个表的源码数据分别标记tag,发送数据。源码根据分区分组规则获取相同key的源码源码版本管理规范数据,再根据tag进行join操作,源码完成实际连接。源码 1.2 map端join 将小表复制到每个map task的源码内存中,仅扫描大表,源码对大表中key在小表中存在时进行join操作。源码使用DistributedCache.addCacheFile设置小表,源码通过标准IO获取数据。源码 1.3 semi join 先将参与join的源码表1的key复制到表3中,复制多份到各map task,源码底部涨停启动源码过滤不在新表3的表2数据,最后进行reduce。 5.2 Hive 建表5.3.1 传统方式建表
定义数据类型,如:TINYINT, STRING, TIMESTAMP, DECIMAL。 使用ARRAY, MAP, STRUCT结构。5.3.2 CTAS查询建表
创建表时指定表名、存储格式、数据来源查询语句。 缺点:默认数据类型范围限制。5.3.3 Like建表
通过复制已有表的结构来创建新表。5.4 存储格式和压缩格式
选择ORC+bzip/gzip作为源存储,ORC+Snappy作为中间存储。 分区表单文件不大采用gzip压缩,桶表使用bzip或lzo支持分片压缩。股指分时指标源码 设置压缩参数,如"orc.compress"="gzip"。5.5 内部表和外部表
外部表使用external关键字和指定HDFS目录创建。 内部表在创建时生成对应目录的文件夹,外部表以指定文件夹为数据源。 内部表删除时删除整个文件夹,外部表仅删除元数据。5.6 分区表和分桶表
分区表按分区字段拆分存储,避免全表查询,提高效率。 动态分区通过设置参数开启,根据字段值决定分区。 分桶表依据分桶字段hash值分组拆分数据。5.7 行转列和列转行
行转列使用split、专用操盘指标源码explode、laterview,列转行使用concat_ws、collect_list/set。5.8 Hive时间函数
from_unixtime、unix_timestamp、to_date、month、weekofyear、quarter、trunc、current_date、date_add、date_sub、c语言导入源码datediff。 时间戳支持转换和截断,标准格式为'yyyy-MM-dd HH:mm:ss'。 month函数基于标准格式截断,识别时截取前7位。5.9 Hive 排名函数
row_number、dense_rank、rank。5. Hive 分析函数:Ntile
效果:排序并分桶。 ntile(3) over(partition by A order by B)效果,可用于取前%数据统计。5. Hive 拉链表更新
实现方式和优化策略。5. Hive 排序
order by、order by limit、sort by、sort by limit的原理和应用场景。5. Hive 调优
减少distinct、优化map任务数量、并行度优化、小文件问题解决、存储格式和压缩格式设置。5. Hive和Hbase区别
Hive和Hbase的区别,Hive面向分析、高延迟、结构化,Hbase面向编程、低延迟、非结构化。5. 其他
用过的开窗函数、表join转换原理、sort by和order by的区别、交易表查询示例、登录用户数量查询、动态分区与静态分区的区别。UE5.1卡通渲染管线修改 学习笔记(改源码版)
UE5.1的卡通渲染管线修改笔记
起始于提升MMD制作质量的需求,从C4D的octane到Blender的Eevee和Cycle,再到现在的UE5,探索了各种卡渲方法,包括后处理和自发光。现在转向直接修改源码,回顾过去发现自己的学习路径混乱,缺乏记录,因此决定补写这篇学习笔记,以供参考。
在探索过程中,我借鉴了前辈们在卡通渲染领域的成果,通过预加载ToonShaderShadowAtlas和ToonShaderSpecularAtlas两个曲线图谱,以及相应的Sampler和高度参数。添加ShadingModel时,我选择了Toon、ToonSSP和ToonSDF,涉及了阴影重映射、高光重映射,以及整体阴影着色的优化。
对于KajiyaKai高光,我利用Anisotropy作为输入,并通过一个参数控制是否启用。SDF阴影着色方面,尝试将算法内置Shader以解决现有问题,尽管初期尝试受限。扩展GBuffer以适应新增ShadingModel的需求,特别关注了ToonData的处理。
在Material文件夹中,我创建了MaterialExpressionToonShaderCustomOutput,结合ToonCurve选择、环境反射、SDF输入等功能,实现了定制化的输出。同时,我还注意到了Lumen修正和BackFace方案的选用。
UE5.1版本中,修改CreateToonOutLinePassProcessor是关键步骤,以处理超过个Pass的问题。尽管扩展ShadingModel上限的方案暂未使用,但已做了相关笔记,涉及GBufferInfo、ShaderGenerationUtil和EngineType的改动。
总结来说,本文记录了从理论学习到实践应用的UE5.1卡通渲染管线修改过程,供后来者参考和学习。