Могу ли я отслеживать источник записи в Spark?

#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 (которой вы должны быть), обновление очень простое