Pull to refresh

Comments 8

Спасибо. Так уже интереснее.

А на HDFS-то это можно расширить? Или может быть даже уже?

Как бы поддержка в исходниках есть, но в java библиотеке похоже не с тем define скомпилировано, потому не поддерживается в текущей сборке:

Exception in thread "main" java.lang.RuntimeException: Got HDFS URI but Arrow compiled without HDFS support
	at org.apache.arrow.dataset.file.JniWrapper.makeFileSystemDatasetFactory(Native Method)
	at org.apache.arrow.dataset.file.FileSystemDatasetFactory.createNative(FileSystemDatasetFactory.java:35)
	at org.apache.arrow.dataset.file.FileSystemDatasetFactory.<init>(FileSystemDatasetFactory.java:31)
	at com.github.isuhorukov.arrow.jdbc.DatasetReader.readArrowMetadataAndMapToDbTypes(DatasetReader.java:128)
	at com.github.isuhorukov.arrow.jdbc.DatasetReader.copyArrowDatasetIntoTable(DatasetReader.java:50)
	at com.github.isuhorukov.arrow.jdbc.bridge.ArrowToDbCli.main(ArrowToDbCli.java:28)

Поведение определено здесь:

  if (scheme == "hdfs" || scheme == "viewfs") {
#ifdef ARROW_HDFS
    ARROW_ASSIGN_OR_RAISE(auto options, HdfsOptions::FromUri(uri));
    if (out_path != nullptr) {
      *out_path = uri.path();
    }
    ARROW_ASSIGN_OR_RAISE(auto hdfs, HadoopFileSystem::Make(options, io_context));
    return hdfs;
#else
    return Status::NotImplemented("Got HDFS URI but Arrow compiled without HDFS support");
#endif

А вот S3 протокол скомпилирован и слинкован!

Так и зачем же нужна эта Arrow?

Если кто-то хочет прочитать 200 гб данных и извлечь из них последовательно расположенную информацию - самых примитивных средств вполне достаточно. Грубо пара гб в минуту дают нам 100 минут на весь объём. Это час сорок. Программу написать - ну ещё час сорок с отладкой и экспериментами. Итого - три двадцать на всё.

Считаем про эту Arrow. Надо лезть на их сайт и чего-то читать. Потом качать и чего-то пробовать. И да, если поверит автору, то нужно сходить ещё в несколько мест, куда он ссылки развесил, и там почитать, чего-то скачать, попробовать. И ради чего? А просто - модная технология. Пару дней на изучение всего с ней связанного. А может и больше.

Итак, три часа против 2-3 дня возни непонятно с чем, о чём автор даже не захотел рассказать подробно.

Вопрос - зачем? Сколько ещё детей не наелось этого хайпа? Сколько гигабайт ненужного хлама дети теперь потянут в свои проекты из-за такой бессмысленной рекламы? Нет, не бессмысленной, а вредной! Вместо часов предлагается тратить дни! Просто так, потому что кому-то захотелось заняться рекламой Arrow.

Если все это не нужно, работайте как вам удобнее! Но когда объем данных переваливает за сотни гигабайт, то время работы с данными в некоторых задачах может стать уже критичным. Каждый решает сам нужно ли ему покупать десяток серверов чтобы обработать данные по старинке или выполнять тот же объем работы на одном узле. Сложность поддержки распределенных приложений всегда выше - мониторинг, сбор метрик, конфигурация сети и т.п.

А просто - модная технология.

Скорее способ решать общие задачи для множества реальных успешных проектов по обмену данными. Просто инструмент для определенного круга задач.

Когда нужен Arrow - передавать данные между разными языками программирования в оптимальном для аналитических запросов формате без ненужных дополнительных аллокаций памяти- Scala->Python->Scala (как делают в Apache Spark).

Добавить в программу работу с Parquet, ORC, Arrow IPC форматами файлов, что является сейчас стандартом, в том же самом Arrow формате хранит кеши данных из транзакционных источников Dremio. Clickhouse использует под капотом Arrow для работы с клоночными данными в форматах Parquet/ORC. HeavyAI база тоже CSV файлы читает через Arrow и передает данные для вычислений над ними на CUDA на GPU в Arrow.

Во первых технологию Вам никто не навязывает, и если Вы спрашиваете "зачем" значит ещё не встретились по работе с кейсом когда Ваши традиционные подходы не укладываются в требуемые временные рамки по скорости выполнения на объемах данных

Во вторых прежде чем считать что-то хайпом, сначала ознакомьтесь хотя бы тестовыми запусками, пощупайте руками, и уже потом давайте оценки.

Я далёк от Spark/Java но и без них на практике меня arrow сильно выручал по работе. Моя статья про альтернативу питоновскому pandas и про использование в R

Sign up to leave a comment.

Articles