Перенос данных из 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