Имам тонове малки csv файлове (около 15kb всеки). Тези csv файлове имат различни заглавки. Искам да ги обединя в един csv файл с всички колони. В крайна сметка този обединен csv файл може да бъде повече от 100 GB. Когато обединявате файлове, ако колона не съществува, добавете тази колона и попълнете с null. Изтеглям тези csv файлове в EMR клъстер от s3, след това използвам код на Spark, за да обединя тези csv файлове, и също се опитах да използвам код на python, за да ги обединя. От експериментите, които направих, кодът на Python работи по-добре от Spark, но не и идея. Някой има ли по-добри идеи? Благодаря.
Най-добрият начин за обединяване на тонове малки csv файлове (с различен размер на колоните) в S3
Отговори (1)
Не съм сигурен дали все още търсите това.
Можете да посочите местоположението на файловете, от които искате да четете, и да използвате Spark-java (ако това е, с което сте запознати?) и да генерирате един голям файл
JavaRDD<YourObjectStructureInPOJO> objectRDD = sparkSession.read().format("csv").option("header", true).option("sep","YOUR_CSV_DELIMITER").option("mode", "FAILFAST")
.schema(getStructureTypes()).load(YOUR_PATH_TO_READ_FROM).javaRDD().map(new YourCustomFunctionToReadIntoObjects());
Dataset<Row> yourDataFrame= sparkSession.createDataFrame(objectRDD, YourObjectStructureInPOJO.class);
След като прочетете всичко, можете да пишете в един csv файл
yourDataFrame.coalesce(1).write().mode(SaveMode.Overwrite).option("header", true).option("sep", "YOUR_CSV_DELIMITER").csv(YOUR_S3_PATH_TO_SAVE);
Не съм сигурен за реализацията на python за същото, но се надявам да ви помогне.
person
Sai Kumar
schedule
09.07.2018