apache-spark - pySpark - 避免一次处理单行
问题描述
我正在使用一个专有函数,它获取一个 NumPyndarray
向量,并给出另一个ndarray
与结果相同长度的函数。
使用 Spark map,我可以在输入数据的每一行上运行此函数,但效率不高,因为该函数每次都处理一个元素的向量。
是否可以在 Spark 中处理大量数据?例如,在一台机器上拥有(大)部分输入数据,而在另一台机器上拥有另一部分数据,我可以一次将每台机器上可用的所有行提供给我的函数作为ndarray
有效计算吗?
解决方案
不清楚您需要执行哪些类型的计算。
mapPartitions
可以处理每个较大的块,但在该块内部,您仍然会使用map
或其他操作来转换数据。
注意:但是,如果您将 Spark 与 Numpy 进行比较,您将在 SparkSQL 中使用 DataFrame 操作,并且所有数据都在服务器之间透明地为您洗牌。
如果您有两个 DataFrame,您可能会在执行任何操作之前加入它们。
在幕后,没有办法避免查看每个元素,无论是聚合、转换还是以其他方式收集回本地集合。
推荐阅读
- c# - 如何拦截最小化?
- mysql - 内部连接以获取具有最大列值的行
- flutter - 我可以在哪里存储我的 android 应用程序的图像?
- excel - 将工作表的选中项粘贴到 VBA Excel 中另一个工作表的彩色单元格
- android - 处于滚动模式时通知 RecyclerView 适配器的问题
- linux - 得到错误==>`换行符或;' 意外
- mysql - MySQL 自动查询
- flutter - 如何在项目网格列表中的图像内添加文本和一些内容
- python - 使用python从字典中的字典中获取JSON数据
- python - 在 Bokeh WheelZoomTool 中停止缩放到某个级别