Я хочу пропустить заголовок моего 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 один раз, как я думаю?