使用 Luiti 来构建数据仓库

前言 - 《使用 Luiti 来构建数据仓库》 是关于大数据处理的实战经验总结的系列文章,面向的读者范围是对数据处理有一年以上经验的人。 众所周知, Hadoop 和 新兴的 Spark 是当前最流行的分布式计算和存储平台,但是均和保守死板的 Java 编程语言所绑定。 R 和 SQL 因为专业领域和表达能力的有限性而导致始终不能一统江湖。 而 Python 作为一个通用的脚本语言也拥有一个完全可以与 Java 匹敌的生态环境, 在 Web 开发,机器学习,文本挖掘, 爬虫等方面均有众多优秀的框架和类库。并且 Python 可以作为工业胶水把前述几个技术方案融合成一个相互补充的解决方案。 本系列文章的侧重点在于从 Python 的函数式特征出发,来逐步讲解一个有约定而不失灵活性的离线数据仓库处理框架是怎么来的, 和可以做什么。欢迎关注 http://luiti.github.io 。


数据处理中遇到的软件工程挑战

数据处理也是软件工程,而软件工程的本质就是控制复杂度。

如果数据在百万规模以下(这种说法仅仅为泛指),且业务逻辑比较简单,那么就可以用一些原始粗暴的方式 去处理数据,比如 SQL, awk, Shell 脚本,和 Python 等,也都是合适的。

如果数据规模达到需要 Hadoop 体系里的 MapReduce, Hive 等工具去处理的时候,公司势必得需要 大数据基础设施架构师 来搭建和维护整套 Hadoop 基础架构环境,需要 数据仓库工程师 来做 数据仓库的业务数据分层和实现。这样之后,传统的 数据分析师 就可以去写些 Hive SQL,或者简单的 MapReduce 程序来生产各种 BI 报表等。

然而,在构建一套分层和组件化的数据仓库时,是需要较强的软件工程机制来保障各个组件的可靠性的, 包括但不限于

  1. 对数据源的实时或非实时的 ETL 清洗处理
  2. 需要便捷地查看各个环节生产的数据
  3. 任务调度应该拥有较强的容错性,并可被监控
  4. 数据在各个环节的正确性
  5. 元数据的管理
  6. 各技术和业务系统的稳定性监控

,等等。

既然挑战这么多,那么是不是已经有现成软件方案了呢?

  1. 最好是经济型的,不需要向厂商支付高额的软件费用。
  2. 最好是提供一些概念上理解起来非常简单的模版,但填充的内容还是原来自己熟悉的一套东西。


Luiti 预备基础知识

  1. 了解 Python 中面向对象和程序包的基本概念及其使用。
  2. 了解 MapReduce 概念,并在 Hadoop 或 MongoDB 中使用过。


Luiti 视频介绍

  1. 如何整合数据仓库和软件架构。
  2. Python 函数式的威力。
  3. Luiti 在最易懂的文件和包的层次上去抽象。
  4. Luiti 具体功能和结构介绍。
PDF 显示过慢提示: 由于 speakerdeck.com 被墙,因此用了 ViewerJS 来手工渲染,缺点是得把 5 MB 多的 PDF 下载完成后才能看到。嫌慢的同学可以直接点击右上角的按钮去直接下载 PDF 即可。
演讲视频是由 Python沙龙深度交流会-第二十期CDA俱乐部活动 录制的,特此感谢。