Разделить Spark rdd запятой внутри mapParitionsWithIndex - PullRequest
0 голосов
/ 05 мая 2020

Я хочу пропустить заголовок моего rdd и разделить остальное на ",". Вот так:

    val rdd = sc.textFile(someFile)
    val parsed = rdd.map(c => c.split(","))
                    .mapPartitionsWithIndex { 
                                              (idx, iter) =>
                                              if (idx == 0) iter.drop(1)
                                              else iter
                                             }

Но я хочу удалить первую карту и сделать разделение внутри mapPartitionsWithIndex. Что-то вроде:

val rdd = sc.textFile(historicalStockPrices)
val parsed = rdd.mapPartitionsWithIndex 
                                        { 
                                          (idx, iter) =>
                                          if (idx == 0) iter.drop(1)
                                          else 
                                            //modify stuff in iterator so that it's split by ","
                                            iterator
                                          }

Я попытался сделать это, позвонив iterator.foreach(c => c.split(",")), но это не сработало. В качестве альтернативы, достаточно ли умен Spark, чтобы понять, что он может «объединить» эти две операции map и mapPartitionsWithIndex, или ему нужно сканировать весь rdd один раз и каждый блок rdd один раз, как я думаю?

...