浅谈函数式编程与大数据
Posted 花白胡子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈函数式编程与大数据相关的知识,希望对你有一定的参考价值。
为什么大数据平台,象scala这类函数式编程语言会突然火起来?
原因就是函数式编程天然适合于数据处理,以及大数据处理。
先从函数式编程的 三个特点说起:
statelessness 无状态
immutability 不变性
higher-order function 高阶函数
大数据处理由于数据量巨大无法进行单机处理,
同时由于数据量大移动数据成本大,而移动计算代码代价更低,所以
将计算过程移动到许多服务器上。函数编程方式容易实现计算程序的分布,支持分布式计算。
1、无状态 意味着 可以预测,程序执行行为。
程序的行为与程序运行的次数,以及何种次序在什么机器运行无关。
2、不变性意味着变量一旦被设置,不能被设置为其他的值 。
同时意味着函数没有副作用(side effects)。
让人很容易预测程序的行为,也很容易实现面向数据流的计算。
3、高阶函数: 一个函数的输入参数是函数,这个函数就可称为高阶函数。
例如 map(function, list) 之类高阶函数, 容易实现并行计算等,以复杂的处理过程。
另一个角度
函数式编程与面向对象编程的数据处理流程大致如下:
面向对象编程的思路,需要从数据库拿出数据,通过ORM映射为对象,然后以面向对象的方式进行处理。
这样绕了一个大圈子,对象模型需要开发人员很努力的维护,当加入一些数据字段时,需要重新scheme设计或者对象设计。
另外这种方式很难横向扩展,当前所谓分布式关系型数据库,无一例外放宽了关系范式方面的限制,就是为了可以实现分布式。
而函数式编程,最灵活的地方在于各种函数抽象,例如map、 reduce、fold等等抽象,可以灵活组合各种算子,进行数据处理,而且是直接与数据交互,不是透过对象模型。
附言:
未来的编程是必然实现数据驱动的编程,不是面向对象或面向过程的编程。
以上是关于浅谈函数式编程与大数据的主要内容,如果未能解决你的问题,请参考以下文章