Spark Dataframe在性能方面如何优于Pandas Dataframe?

时间:2019-04-30 00:14:42

标签: python apache-spark dataframe pyspark databricks

谁能解释一下Spark数据帧在执行时间上比Pandas数据帧更好。我正在处理中等容量的数据并进行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

如果我将Spark Dataframe与10个工作节点一起使用,我可以期待以下结果吗? (这是Pandas DataFrame所花费时间的1/10)

Time taken : 0:00:00.010935

1 个答案:

答案 0 :(得分:1)

1)未分发Pandas数据帧,并且已分发Spark的DataFrame。 ->因此,您将无法获得Pandas DataFrame中并行处理的好处,而Pandas DataFrame中处理大量数据的速度会降低。

2)Spark DataFrame可以确保您的容错能力(它具有弹性),而Pandas DataFrame不能保证它的容错能力。 ->因此,如果您的数据处理在两次处理之间被中断/失败,那么spark可以从谱系(从DAG)重新生成失败的结果集。熊猫不支持容错功能。您需要实现自己的框架来确保它。