Spark разделяет ваши данные на блоки, поэтому он может распределять эти разделы по узлам в вашем кластере. При записи данных он сохраняет это разделение: создает каталог и записывает каждый раздел в отдельный файл. Таким образом, он может лучше использовать преимущества распределенных файловых систем (запись каждого блока параллельно с HDFS/S3), и ему не нужно собирать все данные на одной машине, которая может быть не в состоянии обрабатывать объем данных. .
Два файла с длинными именами представляют собой 2 раздела ваших данных и содержат фактические данные CSV. Вы можете увидеть это, скопировав их, переименовав копии с расширением .csv
и дважды щелкнув их, или что-то вроде head longfilename
.
Вы можете проверить, была ли запись успешной, попытавшись прочитать ее обратно: укажите Spark путь к каталогу, и он распознает его как файл с разделами через метаданные и файлы _SUCCESS
, которые вы упомянули.
Если вам нужны все данные в одном файле, вы можете сделать это с помощью repartition
чтобы уменьшить количество разделов до 1, а затем напишите это:
b <- repartition(a, 1)
write.df(b,"mine/b.csv")
Это приведет только к одному файлу с длинным именем, который представляет собой файл CSV со всеми данными.
(Я не использую SparkR так непроверенный; в Scala/PySpark вы бы предпочли использовать coalesce
, а не repartition
, но я не смог найти эквивалентную функцию SparkR)
person
sgvd
schedule
24.05.2016