【发布时间】:2019-09-18 14:35:11
【问题描述】:
谁能解释一下 Spark Dataframes 在执行时间方面比 Pandas Dataframes 更好。我正在处理中等数量的数据并进行 python 函数驱动的转换
例如,我的数据集中有一列数字从 1 到 100,000,并且想要执行基本的数字操作 - 创建一个新列,它是现有数字列的立方体。
from datetime import datetime
import numpy as np
import pandas as pd
def cube(num):
return num**3
array_of_nums = np.arange(0,100000)
dataset = pd.DataFrame(array_of_nums, columns = ["numbers"])
start_time = datetime.now()
# Some complex transformations...
dataset["cubed"] = [cube(x) for x in dataset.numbers]
end_time = datetime.now()
print("Time taken :", (end_time-start_time))
输出是
Time taken : 0:00:00.109349
如果我使用具有 10 个工作节点的 Spark Dataframe,我可以期待以下结果吗? (这是 Pandas DataFrame 所用时间的 1/10)
Time taken : 0:00:00.010935
【问题讨论】:
-
Spark 的性能涉及很多方面,包括分叉进程之间通信的 http 开销,所以我不会说只是速度提高了 10 倍
-
这有助于了解 spark/pandas 的性能(本地 Spark,但大多数也适用于集群):stackoverflow.com/questions/48815341/…
-
spark 用于处理大量数据(TB、PB)...如果您可以在单台机器上运行逻辑而不会出现性能问题,那么使用 spark 毫无意义,因为您只是浪费资源试图分发不需要分发的东西。
标签: python apache-spark dataframe pyspark databricks