Здравствуйте, Gt_, Вы писали:
Gt_>получивший такую задачу джун должен рассказать, что тут map-reduce нужен именно, что бы влезть в рамки по памяти, параллельность просто бонус. очень упрощенно: маппер читает строку и пишет ту же строку в отдельные файлики, в файлик1 строки начинающииеся на А, файлик2 строки начинающиеся на Б — теперь у тебя не один 10г файлик, а десятки, влезающие в память. осталось лишь отсортировать их содержимое и в нужном порядке слепить в конечный результат. это очень упрощенно, но в этом суть и магия инструмента.
Да? А где это у вас:
@SpringBootTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class BigFile {
@Test
void bigfile0() throws IOException {
SparkSession spark = SparkSession
.builder()
.appName("delta")
.master("local[*]")
.getOrCreate();
spark.read()
.option("delimiter", ".")
.csv("D:/TEST")
.sort("_c1", "_c0")
.repartition(1)
.write()
.option("delimiter", ".")
.csv("D:/TEST_COMBINED");
}
Где вы тут распределяете по буквам и сохраняете в отдельный файл каждую букву? Где это решение?
Давайте рассмотрим практическое решение. Подобный алгоритм — разбиение на буквы — уже приводился участником форума.
Вы знаете как сконфигурировать spark для подобной задачи на практике?