РЕДАКТИРОВАТЬ: Просто взглянул на документациюparallelize
фактически принимает список, но это означает, что вам вообще не нужен foreach.Вы должны иметь возможность просто передать inputRecordsTmp
прямо в распараллеливание и получить из него свой RDD.
Тем не менее, поскольку foreach сформулирован неправильно, я оставлю это здесь для получения дополнительной информации:
Прежде всего, ваш цикл для каждого не выглядит для меня совершенно правильным.При написании цикла for-each в Java предполагается, что часть перед двоеточием относится к типу элемента в коллекции, для которой вы выполняете итерацию.
В вашем случае у вас есть List, которыйсодержит объекты CSVRecord.В основном для каждого вы говорите «для каждого CSVRecord в этом списке объектов CSVRecord ...».Однако вы написали «для каждого Списка объектов CSVRecord в этом списке объектов CSVRecord ...», что не имеет особого смысла.
Java уже знает, что inputRecordsTmp
является списком CSVRecords,поэтому нет необходимости указывать это снова где-либо.Вместо этого вы хотите сказать, что для каждого объекта в списке вы хотите извлечь этот объект в переменную (partition
в вашем случае), чтобы вы могли использовать этот извлеченный объект внутри цикла.
Поэтому вместо того, чтобы писать
for (List<CSVRecord> partition: inputRecordsTmp ){
Вы должны написать
for (CSVRecord record: inputRecordsTmp ){
Это может решить вашу проблему.Если нет, не могли бы вы добавить информацию о том, какая именно строка не работает?