前言 - 《使用 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 报表等。
然而,在构建一套分层和组件化的数据仓库时,是需要较强的软件工程机制来保障各个组件的可靠性的, 包括但不限于
,等等。
既然挑战这么多,那么是不是已经有现成软件方案了呢?