数据架构解决方案(5) -- 数据架构中的风险管理(一)

这是数据架构解决方案系列博客的第五篇,系列的其他文章:

  1. 概述
  2. 数据架构组成
  3. 数据流水线和数据湖
  4. 数据处理和分析方法论
  5. 运维数据应用

到目前为止,我们讨论了如何从头构建一个完整数据应用架构。接下来的文章是以上面 4 章为骨架和脉络,介绍更细节和具体的方法。

首先,我们先来了解在做了一系列决策后,如何评估这个项目中的所有风险,以及如何应对这些风险,以便项目能顺利上线。

数据架构解决方案(4) -- 数据处理应用的部署和运维

这是数据架构解决方案系列博客的第四篇,系列的其他文章:

  1. 概述
  2. 数据架构组成
  3. 数据流水线和数据湖
  4. 数据处理和分析方法论

到目前为止,我们讨论了:

  1. 如何将源数据初步处理并且暂存;
  2. 如何从暂存的数据中进一步榨取出价值。

下一步,也是直面真实用户的重要一步,就是将构建好的数据应用部署上线并且持续运维,给用户(包括组织内部的和外部的)提供构建好的服务。

数据架构解决方案(3) -- 数据处理和分析方法论

这是数据架构解决方案系列博客的第三篇,系列的其他文章:

  1. 概述
  2. 数据架构组成
  3. 数据流水线和数据湖

所有的数据系统的最终目的都是为了让一个组织从它拥有的数据中能发掘出有价值的东西,如果不能有效地从原始数据中挖掘出能为提升组织作出贡献的价值,技术栈再怎么厉害都是没有用的。

本篇文章主要介绍一些数据分析和处理方法论来更有效地挖掘数据价值。

数据架构解决方案(1) -- 数据架构组成

前文说到,写这系列文章的目的是试图总结近几年我在参与构建和学习构建数据应用项目中趋同的部分,所以,我先描述一下我认为目前主流数据应用的组成以及构建这些组件的注意事项。

数据架构组件

总的来说,目前主流的数据应用从数据的被处理时间维度上可以分为 3 类大的部分:

  • 数据流水线和数据湖

    这是整个数据架构中最基础也是最重要的部分,负责所有数据的 接入,收集,ETL,建模,暂存,最终存储等。

  • 数据分析

    规整的数据存入数据湖后,需要经过进一步的处理和分析后才能产生真正的业务价值。

  • 数据应用于业务

    这是整个数据架构的最终端,有业务价值的数据只有最终真正地被应用到业务中,才是有意义的,否则整个架构地构建都是没有意义的。

数据架构解决方案(0)

前言

在过去几年中,我作为数据行业从业者开发过一系列应用,主要围绕

  • 数据接入
  • 数据治理
  • 数据处理
  • 数据存储
  • 数据展现

几个方面。

在这个领域工作的三年时间中,发现目前经历过的公司(以及从各种途径获取到的别的企业)对于数据架构这一大领域的处理思路其实都逐渐趋于相同。为了解决类似的问题,我也在这几年中做了很多重复的事情。

因此,本系列文章在结合我的工作经历和他人优秀内容的基础上试图描述过去几年我在数据架构这个领域的一些思考和总结。

Spark distinct() vs. groupBy()

前言

最近在项目中遇到一个需求:

数据需要按照某些维度分区存储在 S3 上,例如:s3://bucket.name/field_1=a/field_2=b/field_3=c/xxxxx.parquet
另外,在公司系统中,元数据是手动管理,因此在对数据文件进行更改过程中,需要在写入前手动取出所有的分区字段对应的值。
先不论是否有更好地方式管理写入文件相应过程,我们考虑一下目前这个需求该怎样高效地实现。

在这次讨论中,我们都只考虑 Dataframe 接口。

Spark 输出到 Hive 总结

将 Spark 中计算好的 DataFrame 保存在 Hive 中应该是使用 Spark 作为数据处理引擎最常见的需求之一了。

但是在使用过程中会遇到一些问题,本文试图总结一下我在使用过程中遇到的问题以及解决办法。

Spark 调优 下

本篇文章是在结合自己业务和这篇文章的基础上写的。

话接上文, 了解了 Spark 运行时机制后,需要通过下面几种方法来最大化利用集群资源:

  • 正确的资源配置;
  • 正确的并行度配置;
  • 数据本身属性配置。