Инструмент для запроса большого количества CSV-файлов

У нас есть большое количество CSV-файлов, файлы / каталоги разделены по дате и ряду других факторов. Например, файлы могут называться /data/AAA/date/BBB.csv

Есть тысячи файлов, некоторые из них имеют размер в ГБ. Общие размеры данных указаны в терабайтах.

Они добавляются только когда-либо и обычно навалом, поэтому производительность записи не так важна. Мы не хотим загружать его в другую систему, потому что есть несколько важных процессов, которые мы запускаем и полагаемся на возможность быстрой потоковой передачи файлов, написанных на c ++.

Я ищу инструмент / библиотеку, которая позволила бы sql как запросы к данным непосредственно от данных. Я начал изучать hive, spark и другие инструменты для работы с большими данными, но не ясно, могут ли они получить доступ к секционированным данным напрямую из источника, который в нашем случае — через nfs.

В идеале мы могли бы определить таблицу, предоставив описание столбцов, а также информацию о разделах. Кроме того, файлы сжимаются, поэтому обработка сжатия будет идеальной.

Их инструменты с открытым исходным кодом, которые делают это? Я видел продукт под названием Pivotal, который утверждает, что делает это, но мы бы лучше написали наши собственные драйверы для наших данных для системы распределенных запросов с открытым исходным кодом.

Любые выводы будут оценены.

0

Решение

Искра может быть решением. Он находится в памяти распределенного процессора обработки. Данные могут быть загружены в память на нескольких узлах кластера и могут быть обработаны в памяти. Вам не нужно копировать данные в другую систему.

Вот шаги для вашего случая:

  1. Создание многоузлового искрового кластера
  2. Смонтировать NFS на один из узлов
  3. Затем вы должны временно загрузить данные в память в виде СДР и начать их обработку

Это обеспечивает

  1. Поддержка языков программирования, таких как Scala, Python, Java и т. Д.
  2. Поддерживает контекст SQL и фреймы данных. Вы можете определить структуру данных и начать доступ с помощью запросов SQL
  3. Поддержка нескольких алгоритмов сжатия

Ограничения

  1. Данные должны быть помещены в память для обработки Spark
  2. Вам нужно использовать фреймы данных для определения структуры данных, после чего вы можете запрашивать данные, используя sql, встроенный в языки программирования, такие как scala, python, java и т. Д.
  3. Есть небольшие различия между традиционным SQL в СУБД и SQL в распределенных системах, таких как spark. Вы должны знать об этом.

С кустом, вам нужно скопировать данные в HDFS. Поскольку вы не хотите копировать данные в другую систему, куст может не быть решением.

0

Другие решения

Других решений пока нет …