【发布时间】:2019-04-03 00:52:52
【问题描述】:
我正在尝试使用 Spark 处理集群上的 csv 文件。我想了解是否需要显式读取每个工作节点上的文件以并行处理,或者驱动程序节点是否会读取文件并跨集群分发数据以进行内部处理? (我正在使用 Spark 2.3.2 和 Python)
我知道 RDD 可以使用 SparkContext.parallelize() 进行并行化,但是如果使用 Spark DataFrames 呢?
if __name__=="__main__":
spark=SparkSession.builder.appName('myApp').getOrCreate()
df=spark.read.csv('dataFile.csv',header=True)
df=df.filter("date>'2010-12-01' AND date<='2010-12-02' AND town=='Madrid'")
那么如果我在集群上运行上述代码,整个操作是由驱动节点完成还是会在集群中分发df,每个worker在其数据分区上执行处理?
【问题讨论】:
-
相信是worker做的,可以查看spark UI确认
-
@dtheo 那么工作人员如何接收它的数据分区呢?当我们自己执行 read.csv 时,驱动程序会发送它还是将其存储在工作人员中?
标签: apache-spark pyspark apache-spark-sql