Функция, переданная в mapPartitions, вызывается в Pyspark 8 раз

#apache-spark #pyspark #apache-spark-sql #rdd #databricks

Вопрос:

Я новичок в Spark и Databricks. Я заметил, что у меня больше журналов, чем я ожидал. Я исследовал проблему и сузил ее до конкретной проблемы:

 def func_1(*args, **kwargs):  print("some work here")  yield [Row('field1', 'field2')(1, 2)]  test_list = [[1, 2, 3, 4, 5]] testRDD = sc.parallelize(test_list, 1) resultRDD = testRDD.mapPartitions(func_1, 1) resultsDF = spark.createDataFrame(resultRDD.flatMap(lambda x: x), schema=someSchema)  resultsDF.collect() sdf = sdf.union(resultsDF) print(sdf.count())  

Все в sdf.count() порядке, он возвращает 1. Проблема в том, что func_1 по какой-то причине его вызывают 8 раз.

Может ли кто-нибудь помочь мне в дальнейшем расследовании этого?

Комментарии:

1. можете ли вы показать весь код, включая ваши запросы someSchema?

2. @thebluephantom к сожалению, проект является коммерческим, поэтому все детали находятся в разделе NDA. Но, как я указал в вопросе, проблема была сведена к этой части кода. Как вы думаете, может ли схема быть проблемой здесь?

3. Нет, но удобно предоставить код, который работает для ответа на вопрос…