Spark - Получить суффикс части файла - PullRequest
0 голосов
/ 01 мая 2018

Когда Spark использует программу записи Hadoop для записи файла части (используя saveAsTextFile ()), это общий формат "part-NNNNN", в котором он сохраняет файл. Как я могу получить этот суффикс "NNNNN" в Spark во время выполнения?

Ps. Я не хочу перечислять файлы, а затем получить суффикс.

1 Ответ

0 голосов
/ 01 мая 2018

Файлы имеют имена part-00000, part-00001 и т. Д. Каждый из RDD разделов записывается в один part- файл. Таким образом, количество выходных файлов будет зависеть от записываемых разделов в RDD.

Вы можете проверить записываемое СДР на количество разделов (скажем, 5), а затем получить доступ к файлам part-00000 - part-00004.

Иллюстрация

Создание DataFrame путем запроса таблицы Hive

scala> val df1=sqlContext.sql("select * from default.hive_table");

Получить количество разделов RDD

scala> df1.rdd.partitions.size
res4: Int = 11

Сохранить DataFrame в HDFS

scala> df1.rdd.saveAsTextFile("/process_output")

Проверьте расположение выхода HDFS

hadoop fs -ls /process_output
Found 12 items
-rw-r--r--   3 root hdfs          0 2018-05-01 08:51 /process_output/_SUCCESS
-rw-r--r--   3 root hdfs        190 2018-05-01 08:51 /process_output/part-00000
-rw-r--r--   3 root hdfs        190 2018-05-01 08:51 /process_output/part-00001
-rw-r--r--   3 root hdfs        182 2018-05-01 08:51 /process_output/part-00002
-rw-r--r--   3 root hdfs        190 2018-05-01 08:51 /process_output/part-00003
-rw-r--r--   3 root hdfs        180 2018-05-01 08:51 /process_output/part-00004
-rw-r--r--   3 root hdfs        190 2018-05-01 08:51 /process_output/part-00005
-rw-r--r--   3 root hdfs        190 2018-05-01 08:51 /process_output/part-00006
-rw-r--r--   3 root hdfs        190 2018-05-01 08:51 /process_output/part-00007
-rw-r--r--   3 root hdfs        190 2018-05-01 08:51 /process_output/part-00008
-rw-r--r--   3 root hdfs        190 2018-05-01 08:51 /process_output/part-00009
-rw-r--r--   3 root hdfs        190 2018-05-01 08:51 /process_output/part-00010
...