Можно ли использовать Spark API для чтения большого CSV-файла, содержащего несколько разделов с разными заголовками?Структура файла выглядит следующим образом:
BatchCode#1
Name,Surname,Address
AA1,BBB,CCC
AA2,BBB,CCC
AA3,BBB,CCC
BatchCode#2
Name,Surname,Address,Phone
XY1,BBB,CCC,DDD
XY2,BBB,CCC,DDD
XY3,BBB,CCC,DDD
При чтении записей мы должны быть осторожны с заголовками, так как форматы файлов могут быть разными в разных разделах.Информация BatchCode должна быть извлечена из заголовка и должна быть частью каждой записи в этом разделе - например, данные в строке 1 должны быть проанализированы как:
Name: AAA1
Surname: BBB
Address:CCC
BatchCode:1
Следующие опции приходят мне на умно я не совсем уверен, может ли это создать значительные проблемы:
- Чтение файла с использованием wholeTextFile.Это будет использовать один поток для чтения файла, но он загрузит весь файл в память и может вызвать проблемы с памятью для больших файлов.
- Вынуждение Spark прочитать файл в одном потоке, используя coalesce (1) наsc.textFile.Я не уверен, гарантирован ли заказ всегда.Как только мы получим файл как RDD, мы будем кэшировать строки заголовков при чтении файла и объединять их с соответствующими записями данных.
Даже если вышеуказанные подходы сработают, будут ли они эффективными?Что было бы наиболее эффективным способом?