Мы потребляем очень большие данные, которые должны быть записаны так же быстро, как мы получаем, и мы используем HDFS, поэтому мы предпочитаем использовать его. Данные почти неструктурированы, и мы будем редко выполнять базовые запросы по ним. Данные плоские, с несколькими полями, каждая строка представляет другие данные.
key1=str key2=30.3 key3=longtexthere
Другая строка данных:
key1=3 key5=abc
SequenceFile казался наиболее естественным, но я не мог найти, как хранить несколько строк в одном SequenceFile.
В настоящее время в нашем временном решении у нас есть несколько писателей, которые записывают в несколько текстовых файлов. Поэтому, когда необходимы запросы, мы читаем их параллельно. Однако текущие текстовые файлы содержат тысячи строк, и я не думаю, что создание одного SequenceFile для каждой строки было бы возможным, это повлекло бы за собой много накладных расходов для хранения метаданных и одновременного чтения слишком большого количества файлов при запросе.
Я думаю, что проблема может быть решена с помощью HBase или Cassandra, колумнарной базы данных, но мы почти обязаны использовать HDFS. Мне что-то не хватает с SequenceFiles, или нам действительно нужно использовать базу данных columunar?