如何在Python中编写简单代码,并且速度超越Spark?( 三 )

\n \n

你可能会“说我是一个梦想家” 。 我是一个梦想家 , 但不是唯一的一个!本篇文章将证明如今可以使用Nuclio和RAPIDSlimg令以上设想成为现实 , 它们是由NVIDIA孵化的免费开源数据科学加速平台 。

\n \n

过去几个月 , 有人将RAPIDS与Nuclio开源无服务器项目和Iguazio的PaaS集成在一起 。 现在 , 使用相同的Python代码会拥有更快的数据处理速度和可扩展性 , 并且由于采用无服务器方法 , 其操作开销可达到最低水平 。

\n \n

本文将对同样广受欢迎的实时数据的用例进行演示 , 它们由基于Json的日志组成 。 本文将根据以上数据完成分析任务 , 并将聚合结果转储为压缩的Parquet格式 , 便于进一步的查询或机器学习训练 。 本文将研究批和实时流(是的 , 使用简单Python代码的实时流) 。 但开始之前 , 先进行总体概述 。

\n \n

是什么导致Python既慢又无法扩展?

\n \n

在小型数据集上使用pandas时 , 其性能表现不错 , 但这只发生在整个数据集适合内存且在pandas和NumPy层下使用已优化的C代码进行处理的情况下 。 处理大量数据包含集中的的IO操作、数据转换、数据拷贝等 , 拖慢了处理的速度 。 从本质上讲 , 臭名昭著的GIL 给Python带来了线程同步的困难 , 在处理复杂任务时非常低效 , 异步Python相对更好 , 但其开发复杂且无法解决固有的锁定问题 。

推荐阅读