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

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

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

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


person Nik    schedule 19.07.2018    source источник
comment
Запись DF как Avro работала без особых накладных расходов на схему avro. Хотя parquet лучше справлялся с созданием файлов меньшего размера, но увеличение было небольшим (20%).   -  person Nik    schedule 21.07.2018


Ответы (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
person Zoltan    schedule 20.07.2018
comment
Мне помогло письмо в Avro. Я нашел этот пост SO, который помог мне написать DF как Avro. - person Nik; 21.07.2018