Надеясь, что кто-то может помочь пролить свет на это. Я читаю 35Gb .csv
с S3.
Я ожидал, что он будет быстрее читать в .csv
как Dataframe. Мое обоснование состояло в том, что, поскольку нет никакой лямбды-Python, которая должна быть выполнена для анализа CSV, то нет никакой перекрестной стоимости сериализации JVM (как при выполнении UDF Python):
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
in как RDD на самом деле значительно быстрее.
my_rdd = sc.textFile("s3a://mybucket/folder) \
.map(lambda x: x.split(','))
Моя ментальная модель здесь кажется совершенно неосновной.
- Есть лина самом деле стоимость перекрестной сериализации JVM связана с выполнением лямбда-выражений Python на RDD?