#java #apache-spark
#java #apache-spark
Вопрос:
При параллельной обработке нескольких файлов с помощью Spark я хотел бы знать, из какого файла поступает конкретная запись. Моя цель — присвоить идентификатор файла (или, по крайней мере, имя файла) каждой записи в целях внутреннего аудита. Есть ли какой-либо способ сделать это?
Я использую Spark Java API.
Ответ №1:
Да, вы можете использовать SparkContext.wholeTextFiles
который выдает вам имя файла в качестве ключа и весь файл в качестве значения. Если sc
это SparkContext (JavaSparkContext в вашем случае), просто вызовите sc.wholeTextFiles("path/to/dir/")
P.S.: Я отвечал на аналогичный вопрос ранее и обнаружил, что у этой функции действительно возникают проблемы с чтением сжатых файлов (тестировалось только с gzip), так что имейте это в виду.
Комментарии:
1. Спасибо, ааронман. Есть ли такие возможности в предыдущих версиях spark. Я забыл упомянуть, что я все еще на Spark 0.9.1
2. @soroka21 у него его нет, обновите или проверьте реализацию на github , если вы используете систему управления зависимостями, такую как maven (которой вы должны быть), обновление очень простое