Запрос относительно искры проглатывания. [Джава] - PullRequest
0 голосов
/ 05 мая 2018

Мне нужно предложение по запросу ниже.

В Amazon S3 хранится огромное количество zip-файлов.

Шаблон имени файла Zip - prefix_timestamp.

То же имя zipEntry может присутствовать только в файлах zip с тем же префиксом.

Один из способов обработки данных - создать новый APIHadoopFile, как показано ниже.

Здесь ключ JavaPairRDD - это имя файла zipentry, а значение - содержимое файла [файл zipEntry].

List<String> s3Keys = getS3Keys(); // list of s3 path to zip files

JavaPairRDD<Text, BytesWritable>  rddZipEntryFileNameToFile = sparkContext.newAPIHadoopFile(String.join(",", s3Keys), ZipFileInputFormat.class, Text.class, BytesWritable.class, sparkConfig);

..

..

rddZipEntryFileNameToProcessedData

Мне нужно применить lowerByKey к обработанному результату, поскольку одноименное имя zipEntry может присутствовать в нескольких файлах zip. Это дает мне желаемый результат.

Ex:

//key is zipEntry file name
rddZipEntryFileNameToProcessedData.reduceByKey((v1, v2) -> {

                        v1.mergeValue(v2);
                        return v1;
                    })

По соображениям производительности я ищу какое-то решение, чтобы избежать ReduByKey и либо обрабатывать файл записи zip с тем же именем на одном хосте или в разделе.

Пример: JavaPairRDD<Text, Lis<BytesWritable> > rddZipEntryFileNameToFiles

Или если я могу обрабатывать zip-файлы с одинаковым префиксом на одном хосте.

В основном я хочу воспользоваться тем, что zipEntry с тем же именем может быть частью zip-файлов с таким же префиксом.

Любое предложение приветствуется.

1 Ответ

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

reduceByKey эффективно. Он будет обрабатывать это в одном и том же узле так долго, как это возможно, то есть, если spark назначит этот раздел этому узлу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...