ClickHouse/docs/ru/faq/general.md
2020-01-15 15:40:53 +03:00

4.9 KiB
Raw Blame History

Общие вопросы

Почему бы не использовать системы типа MapReduce?

Системами типа MapReduce будем называть системы распределённых вычислений, в которых операция reduce сделана на основе распределённой сортировки. Наиболее распространённым opensource решением данного класса является Apache Hadoop. Яндекс использует собственное решение — YT.

Такие системы не подходят для онлайн запросов в силу слишком большой latency. То есть, не могут быть использованы в качестве бэкенда для веб-интерфейса. Такие системы не подходят для обновления данных в реальном времени. Распределённая сортировка не является оптимальным способом выполнения операции reduce, если результат выполнения операции и все промежуточные результаты, при их наличии, помещаются в оперативку на одном сервере, как обычно бывает в запросах, выполняющихся в режиме онлайн. В таком случае, оптимальным способом выполнения операции reduce является хэш-таблица. Частым способом оптимизации map-reduce задач является предагрегация (частичный reduce) с использованием хэш-таблицы в оперативной памяти. Эта оптимизация делается пользователем в ручном режиме. Распределённая сортировка является основной причиной тормозов при выполнении несложных map-reduce задач.

Большинство реализаций MapReduce позволяют выполнять произвольный код на кластере. Но для OLAP задач лучше подходит декларативный язык запросов, который позволяет быстро проводить исследования. Для примера, для Hadoop существует Hive и Pig. Также смотрите Cloudera Impala, Shark (устаревший) для Spark, а также Spark SQL, Presto, Apache Drill. Впрочем, производительность при выполнении таких задач является сильно неоптимальной по сравнению со специализированными системами, а сравнительно высокая latency не позволяет использовать эти системы в качестве бэкенда для веб-интерфейса.

Что делать, если у меня проблема с кодировками при использовании Oracle через ODBC?

Если вы используете Oracle через драйвер ODBC в качестве источника внешних словарей, необходимо задать правильное значение для переменной окружения NLS_LANG в /etc/default/clickhouse. Подробнее читайте в Oracle NLS_LANG FAQ.

Пример

NLS_LANG=RUSSIAN_RUSSIA.UTF8

Как экспортировать данные из ClickHouse в файл?

Секция INTO OUTFILE

Добавьте секцию INTO OUTFILE к своему запросу.

Например:

SELECT * FROM table INTO OUTFILE 'file'

По умолчанию, для выдачи данных ClickHouse использует формат TabSeparated. Чтобы выбрать формат данных, используйте секцию FORMAT.

Например:

SELECT * FROM table INTO OUTFILE 'file' FORMAT CSV

Таблица с движком File

Смотрите File.

Перенаправление в командой строке

$ clickhouse-client --query "SELECT * from table" > result.txt

Смотрите clickhouse-client.

Оригинальная статья