浅谈函数式编程与大数据

Posted 花白胡子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈函数式编程与大数据相关的知识,希望对你有一定的参考价值。

为什么大数据平台,象scala这类函数式编程语言会突然火起来?

原因就是函数式编程天然适合于数据处理,以及大数据处理。


先从函数式编程的 三个特点说起:

statelessness 无状态

immutability 不变性

higher-order function 高阶函数

大数据处理由于数据量巨大无法进行单机处理,

同时由于数据量大移动数据成本大,而移动计算代码代价更低,所以

将计算过程移动到许多服务器上。函数编程方式容易实现计算程序的分布,支持分布式计算。


1、无状态 意味着 可以预测,程序执行行为。

程序的行为与程序运行的次数,以及何种次序在什么机器运行无关。

2、不变性意味着变量一旦被设置,不能被设置为其他的值 。

 同时意味着函数没有副作用(side effects)。

让人很容易预测程序的行为,也很容易实现面向数据流的计算。

3、高阶函数: 一个函数的输入参数是函数,这个函数就可称为高阶函数。

例如 map(function, list) 之类高阶函数, 容易实现并行计算等,以复杂的处理过程。


另一个角度

函数式编程与面向对象编程的数据处理流程大致如下:

 

面向对象编程的思路,需要从数据库拿出数据,通过ORM映射为对象,然后以面向对象的方式进行处理。

这样绕了一个大圈子,对象模型需要开发人员很努力的维护,当加入一些数据字段时,需要重新scheme设计或者对象设计。

另外这种方式很难横向扩展,当前所谓分布式关系型数据库,无一例外放宽了关系范式方面的限制,就是为了可以实现分布式。


而函数式编程,最灵活的地方在于各种函数抽象,例如map、 reduce、fold等等抽象,可以灵活组合各种算子,进行数据处理,而且是直接与数据交互,不是透过对象模型。


附言:

未来的编程是必然实现数据驱动的编程,不是面向对象或面向过程的编程。


以上是关于浅谈函数式编程与大数据的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Java 8的函数式编程

本期沙龙浅谈函数式编程

浅谈python函数式编程

技术浅谈MapReduce 与函数式编程

浅谈Kotlin中集合和函数式API完全解析-上篇

技术分享浅谈函数式编程 - 史原杰