У нас есть большое количество файлов csv, файлы/каталоги разделены по дате и нескольким другим факторам. Например, файлы могут быть названы /data/AAA/date/BBB.csvИнструмент для запроса большого количества файлов csv
Есть тысячи файлов, некоторые из которых находятся в диапазоне GB. Общие размеры данных находятся в терабайтах.
Они только когда-либо добавляются и обычно навалом, поэтому производительность записи не так важна. Мы не хотим загружать его в другую систему, потому что мы запускаем несколько важных процессов, которые полагаются на возможность быстрого потока файлов, которые написаны на C++.
Я ищу инструмент/библиотеку, которая позволила бы sql-подобным запросам передавать данные непосредственно из данных. Я начал смотреть на улей, искру и другие большие инструменты данных, но неясно, могут ли они получить доступ к секционированным данным непосредственно из источника, который в нашем случае осуществляется через nfs.
В идеале мы могли бы определить таблицу, указав описание столбцов, а также информацию о разделе. Кроме того, файлы сжаты, поэтому обработка сжатия будет идеальной.
Являются ли их инструменты с открытым исходным кодом, которые это делают? Я видел продукт под названием Pivotal, который утверждает, что делает это, но мы предпочли бы написать наши собственные драйверы для наших данных для системы распределенных запросов с открытым исходным кодом.
Любые провода будут оценены.
Попробуйте сверло Apache –
Как сказано в сообщении isaac.hazan, Apache Drill 1.4 предоставляет вам интерфейс SQL для плоских файлов. Красота в том, что вам не нужно упоминать абсолютный файл. Иерархия папок в разделах должна выполняться. Ваш пример /data/AAA/date/BBB.csv - запросы огня, такие как 'select count (*) из dfs.root. '/ Data/AAA /';' для всех файлов под всеми папками в AAA. – rohitkulky
Позволяет ли Apache Drill указать функцию раздела по атрибуту? Например, предположим, что у вас есть данные в /data/TAG1_A/yyyy-mm-dd.csv, /data/TAG1_B/yyyy-mm-dd.csv, но вы хотите только запросить данные за конкретный год, есть ли любой способ, которым Apache Drill мог знать только для поиска некоторых файлов? Другим возможным запросом может быть только несколько значений для TAG1, что ему не нужно будет проходить через все файлы TAG1_XXX. Я надеялся, что это будет больше похоже на секционированные таблицы в базе данных. – bpeikes