将近期一些经验点罗列了一下,有些非常的简单,但对于初学者却就是会造成误解和麻烦。同时再次体会到,很多理解上的困难,其实就是一些基本的概念、认知、框架缺失造成的。一旦有了框架,后面再“添砖加瓦”就相对容易了。
概念认知
-
KETTLE
- <转换>由输入/转换/输出构成的流程,功能类似preap
- <作业>将转换和相关作业组建串联起来,形成的一个整体的任务
- <主对象树>展示一个job的基本属性
- 作业必须从strat开始,按住shift拖放实现连线
- <正则表达式>字符串匹配的模式,如通配符*
- <JDBC>(Java DataBase Connectivity,java数据库连接)一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
- MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想
-
数据仓库的基本构架,一般底层HDFS,上面跑MapReduce/Tez/Spark,再上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。这解决了中低速数据处理的要求。
图片来自网络
-
背景知识
- 数据表层
* DIM,维表
* DW,从ODS初步整合的宽表
* DMK,KPI
* DMR,Report
* meterial code=model_code+opt_code+vcl_clr_code
- 数据表层
-
提效技巧
- DBeaver
- 可在字段名进行自定义过滤,并直接查看值构成,不用写SQL
- 更改大小写 ctrl+shift+x/y
- 收藏ctrl+shift+alt+d
- AS不仅可以用来取别名,还可以快速创建字段并统一赋值,可用于表合并时建立标识字段
- NVL(A,B)若A不为空就取A值,否则取B值,若都为空则返回null
- DBeaver
经验心得
-
调度与连接
- 保证各数据库字段名称大小一致,否者调度运行时可能无法找到字段,会报错
- Impala的可以理解成用在数据库上的everything软件,从连接配置的角度说,Hive与Impala的差别只是端口的差别。
- 注意表名的前缀,使用刷新时要加上表的前缀,同时在tableau中链接impala时则要去掉表前缀
- kettle中使用了变量的时候一定要勾选"变量替换"
- 可用date_add('${START_DATE}',n)对增量取值日期进行偏移
- 无法使用sqoop推数时,可现在hive中建立中间表A,再通过公共推数job将A表推入指定数据库
-
Tableau Prep
- 可以通过建立外部的映射表以减轻取数量提升处理速度
- 合并表格要注意颗粒度的差别,特别要注意是否有进行聚合,如数量之类的字段
- 先判断表的颗粒度,再决定如何整合。quantity的颗粒度是最小的,有值看值,没有值就看数据条目数
- 操作前要预判数据量变化情况,以此快速校验操作正误
- 左连接发现数据量增多,说明右表存在重复值,解决方式是使用distinct+group by(SQL),多个字段的情况下,可以将多个字段值合并为一个值,在对合并值进行聚合,进而进行联结(Prep)
-
其它
- 数据处理其实就是一条流,所有工作都是围绕这条流展开的
网友评论