Перенос данных из HDFS/S3 в локальную ФС и загрузка в Java

У меня есть задание Spark, работающее в кластере EMr, который записывает DataFrame в HDFS (который затем s3-dist-cpдолжен S3). Размер данных невелик (2 ГБ при сохранении как parquet). Эти данные в S3 затем копируются в локальную файловую систему (экземпляр EC2 под управлением Linux) и затем загружаются в приложение Java.

Оказывается, я не могу иметь данные в parquet формат, потому что паркет был разработан для HDFS и не может использоваться в локальной FS (если я ошибаюсь, пожалуйста, укажите мне на ресурс о том, как читать файлы паркета в локальной FS).

Какой другой формат я могу использовать для решения этой проблемы? Будет ли Avro достаточно компактным и не увеличит размер данных, упаковав схему с каждой строкой кадра данных?

1 ответ

Вы можете использовать Parquet в локальной файловой системе. Чтобы увидеть пример в действии, загрузите библиотеку parquet-mr отсюда, соберите ее с локальным профилем (mvn -P local install должен сделать это, при условии, что у вас есть thrift а также protoc установлен), затем введите следующее, чтобы увидеть содержимое файла вашего паркета:

java -jar parquet-tools/target/parquet-tools-1.10.0.jar cat /path/to/your-file.parquet
Другие вопросы по тегам