希望有人可以帮助阐明这一点。我正在从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(','))
我的心理模型似乎完全不合时宜。