Другой альтернативой является использование метода mapPartitionsWithIndex
, поскольку вы получите номер индекса раздела и список всех строк в этом разделе. Раздел 0 и строка 0 будут заголовком
val rows = sc.textFile(path)
.mapPartitionsWithIndex({ (index: Int, rows: Iterator[String]) =>
val results = new ArrayBuffer[(String, Int)]
var first = true
while (rows.hasNext) {
// check for first line
if (index == 0 && first) {
first = false
rows.next // skip the first row
} else {
results += rows.next
}
}
results.toIterator
}, true)
rows.flatMap { row => row.split(",") }
return
- это инструкция. Таким образом нельзя использовать выражения внутри выражений.
Поскольку тернарная операция является выражением, и вы не можете использовать операторы в выражениях.
Вы можете легко использовать тернарный оператор в возврате.
return sum > 0 ? 1 : 0;
Или, как указал DrDipShit:
return sum > 0;
Потому что return
- это инструкция, а не выражение. Вы также не можете выполнить int a = return 1;
.
См. синтаксис тернарного оператора
expr1 ? expr2: expr3;
, где выражение1
, выражение2
, выражение3
— выражения;
Оператор ?:
работает следующим образом
выражение1
оценивается первым, если оно истинно выражение2
оценивается в противном случае оценивается выражение3
.
поэтому в выражениях оператор return не может использоваться на языке C.