python玩转大数据好过么_python是怎么应用在大数据上的,以何种方式?

Mars 适合用来处理大规模数据,并且还保留了传统 Python 数据处理的特性,可以说,只要会用 numpy、pandas 和 scikit-learn 之一,就会用 mars。

在过去,大数据有相当高的门槛,hadoop 和 spark 都是基于 JVM 语言。无论是一开始的 MapReduce 编程模型,到 RDD 编程,虽然一定程度上解决了规模和效率问题,但是没有解决开发效率问题,用户需要些大量代码来完成看似很简单的问题。更严重的是,如果你对背后的 MapReduce 或者 RDD 不了解,你不可能高效地解决问题。而且即使如 Spark 支持多语言,不同语言的效率也不尽相同;Python 也不是这些平台上的一等公民,如果用过 pyspark,应该有被 java 异常栈支配的恐惧。当然有人会说,因为有他们,数据工程师(data engineer)才变得重要起来。

尽管后来大家都转向了更易用的 SQL,但 SQL 的表达有限,你可以用 SQL 来完成如 SUM、AVG 等简单的统计操作,但如果你是数学家、数据科学家、高级分析师,想必你是不会只用 SQL 来解决问题的,因为 SQL 在统计或者数学方面的支持就太弱了。而且严格的 schema 要求,让编程变得繁琐。所以,我听说相当一部分数据科学家用 Spark 只是用 to_pandas 的功能:)

所以,开发效率和效率二者真的是鱼和熊掌不可兼得么?大数据就非得要这么高的门槛才能真正玩转么?

我一直认为化繁为简,才是真正的能力。

而且,单机的 Python 库,numpy、pandas 和 sklearn 之类,性能其实不弱,接口简单强悍,它们只是不能处理大规模的数据而已。

所以,Mars 正是基于这些库构建整个系统,唯一做的就是利用 Mars 的自动并行的能力,自动将多维数组、DataFrame 的计算分成多个小任务执行,这样能利用多核和分布式的能力;同时 Mars 会尽量管线执行这些细粒度的任务,因此内存的利用也非常高效。

要使用 Mars,安装和 pandas 们一样简单(不再像普通大数据平台是门手艺活了):

pip install pymars

如果你熟悉 Numpy,想必熟悉下面的代码:

import mars.tensor as mt

a = mt.random.rand(10000, 50)

b = mt.random.rand(50, 5000)

a.dot(b).execute()

我们曾经解决过 2.25T 和 2.25T大小的矩阵乘法,比基于现有大数据平台快超过20倍的速度。

如果熟悉 pandas,那么 Mars DataFrame 代码也手到擒来:

import mars.dataframe as md

ratings = md.read_csv('Downloads/ml-20m/ratings.csv')

movies = md.read_csv('Downloads/ml-20m/movies.csv')

movie_rating = ratings.groupby('movieId', as_index=False).agg({'rating': 'mean'})

result = movie_rating.merge(movies[['movieId', 'title']], on='movieId')

result.sort_values(by='rating', ascending=False).execute()

sklearn 也是如此:

import mars.dataframe as md

from mars.learn.neighbors import NearestNeighbors

df = md.read_csv('data.csv')

nn = NearestNeighbors(n_neighbors=10)

nn.fit(df)

neighbors = nn.kneighbors(df).fetch()

分布式搭建也很简单,自己部署,只需要几个命令;k8s 集群拉起也很方便。

Mars 完全开源,且是真正的开源,你可以看到我们的 roadmap;我们每个月发布版本,月报都可以看到;我们的代码都会走 Pull Request,都会有人 review。

欢迎 star 我们的项目,关注我们的专栏。用起来 Mars,共同参与 Mars 的开发。一起做一些不一样的事情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值