为什么在Pyspark中将.csv作为RDD读取速度更快?

时间:2019-10-03 21:56:51

标签: apache-spark pyspark

希望有人可以帮助阐明这一点。我正在从S3读取35Gb .csv

我期望将它作为数据帧读入.csv会更快。我的理由是,因为无需执行python lambda即可解析csv,所以就不会产生跨JVM序列化的开销(就像执行python UDF时那样):

my_schema = StructType([
    StructField('A', IntegerType()),
    StructField('B', IntegerType()),
    StructField('C', IntegerType())
])

my_df = spark.read.csv("s3a://bucket/folder", header=False, schema=my_schema)

train_df.show(n=5)

但是,经过测试,我意识到将.csv作为RDD读入实际上要快得多。

my_rdd = sc.textFile("s3a://mybucket/folder) \
    .map(lambda x: x.split(',')) 

我的心理模型似乎完全不合时宜。

  • 与在RDD上执行python lambda相关的实际上是跨JVM序列化成本吗?

0 个答案:

没有答案