Как подключить Elasticsearch к Tableau? Два простых метода
Введение в Elasticsearch
Elasticsearch – поисковая система с открытым исходным кодом, разработанная на базе Java. По сути, это – база данных без SQL и аналитический движок, построенный на основе Lucene. Он обеспечивает производительность в режиме реального времени и быстрые результаты поиска, прежде всего потому, что выполняет поиск на основе индексов, а не на основе текста.
Некоторые ключевые особенности Elasticsearch:
- Масштабируемость: Elasticsearch работает без сбоев даже в системах, которые содержат тысячи узлов, и автоматически масштабируется.
- Ориентирован на документы: по умолчанию здесь используются документы в формате JSON. Это – простой и лаконичный формат, который поддерживает большинство языков программирования.
- Поддержка схемы: нет необходимости заранее указывать индекс или тип данных, объекты автоматически сопоставляются, когда они индексируются с новыми свойствами.
- Поиск по экземпляру: предоставляет функцию поиска по мере ввода символов, чтобы помочь пользователям быстро получить релевантный результат.
Для получения дополнительной информации об Elasticsearch вы можете посетить их официальный сайт.
Введение в Tableau
Tableau – это мощный инструмент бизнес-аналитики, который используется для преобразования необработанных данных в понятный и приемлемый формат. Этот инструмент широко используется для визуализации данных, и его может освоить даже пользователь без технического бекграунда.
Он создает визуализации с помощью информационных панелей и рабочих таблиц, что помогает пользователям выполнять анализ в режиме реального времени, быстро и безопасно. Для работы с ним не требуется никаких навыков программирования или технического образования.
Для получения дополнительной информации о Tableau вы можете посетить их официальный сайт.
Упростите анализ данных с помощью конвейеров данных без Hevo-кода
Hevo Data, конвейер данных без кода, помогает передавать данные из Elasticsearch (среди 100+ источников) в необходимое хранилище данных и визуализировать их в Tableau. Hevo полностью управляем и хорошо автоматизирует не только процесс загрузки данных из желаемого источника, но и процесс их обогащения и преобразования в готовую для анализа форму без необходимости написания даже одной строки кода. Его отказоустойчивая архитектура гарантирует, что данные обрабатываются безопасно и согласовано, с нулевыми потерями.
Он обеспечивает согласованное и надежное решение для управления данными в режиме реального времени и всегда представляет готовые для анализа данные в требуемом месте назначения. Это позволяет вам сосредоточиться на ключевых бизнес-требованиях и выполнять глубокий анализ с помощью инструментов бизнес-аналитики, таких как Tableau и другие.
Характеристики:
- Безопасность: отказоустойчивая архитектура, она гарантирует, что данные обрабатываются безопасным, согласованным образом и с нулевыми потерями.
- Управление схемой: Hevo устраняет необходимость решать задачу управления схемой, автоматически обнаруживает схему входящих данных и сопоставляет ее со схемой назначения.
- Минимальное обучение: Hevo с его простым и интерактивным пользовательским интерфейсом чрезвычайно прост в работе и выполнении операций даже для новых клиентов.
- Hevo предполагает масштабирование. По мере роста количества источников и объема ваших данных Hevo масштабируется по горизонтали, обрабатывая миллионы записей в минуту с очень небольшой задержкой.
- Добавочная загрузка данных: Hevo позволяет передавать данные, которые меняли в режиме реального времени. Это обеспечивает эффективное использование полосы пропускания с обоих сторон.
- Поддержка в реальном времени: вы можете связаться с командой Hevo 24/7, чтобы запросить техническую поддержку для своих клиентов через чат, электронную почту и по телефону.
- Мониторинг в реальном времени: Hevo позволяет вам отслеживать поток данных и проверять, где находятся ваши данные в определенный момент времени.
Требования
- Практическое знание Tableau.
- Tableau установлен на главной рабочей станции.
- Общее представление об использовании командной строки.
- Общее представление о Python и его библиотеках.
Методы подключения Elasticsearch к Tableau
Есть несколько возможных методов установки связи между Elasticsearch и Tableau:
- Метод 1. Использование ODBC для подключения Elasticsearch к Tableau.
- Метод 2: Экспорт данных Elasticsearch в формате JSON.
Метод 1. Использование ODBC для подключения Elasticsearch к Tableau
Для установления соединения между Elasticsearch и Tableau можно также использовать драйверы ODBC. Драйвер ODBC может добавить источник данных, например, Elasticsearch, а затем подключиться к Tableau.
Это можно реализовать с помощью следующих простых шагов:
- Шаг 1. Установка драйвера ODBC Elasticsearch.
- Шаг 2. Настройка DSN для Elasticsearch.
- Шаг 3. Подключение к Tableau
Шаг 1. Установка драйвера ODBC Elasticsearch
Загрузите последнюю версию драйвера ODBC для Elasticsearch с официального сайта Elasticsearch. Для загрузки драйвера вы можете использовать следующую ссылку:
https://www.elastic.co/downloads/odbc-client
После установки драйвера ODBC в вашей системе, запустите его, чтобы начался процесс настройки DSN. Выберите 64- или 32-разрядную версию и перейдите на вкладку «System DSN» (Системный DSN). Чтобы запустить его, щелкните в окне поиска в меню администратора источника данных ODBC.
Щелкните на вкладку драйверов, чтобы проверить, установлен ли драйвер.
Шаг 2. Настройка DSN для Elasticsearch
Есть три способа настройки DSN для Elasticsearch: «User DSN» (Пользовательский DSN), «System DSN» (Системный DSN), или «File DSN» (Файловый DSN). Нажмите кнопку «Add» (Добавить) и выберите драйвер ODBC Elasticsearch.
Затем нажмите кнопку "Finish" (Готово). Появится окно настройки Elasticsearch DSN, в котором вам необходимо указать данные о настройках подключения и аутентификации:
Заполните необходимые поля следующим образом:
- Name (Имя): введите имя DSN, который вы хотите создать.
- Description (Описание): предоставляет информацию о подключении в виде коротких заметок.
- Cloud ID (ID облака): это – строка, которая кодирует параметр подключения и помогает установить соединение с облачным сервисом Elasticsearch.
- Hostname (Имя хоста): представляет собой IP-адрес экземпляра, к которому будет подключаться драйвер.
- Port (Порт): Elasticsearch по умолчанию использует порт 9200, однако вы можете указать другой номер порта в соответствии с вашим кластером.
- Username (Имя пользователя): введите имя пользователя в правильном формате для подключения к базе данных Elasticsearch.
- Passwords (Пароли): здесь введите свой пароль.
Драйвер ODBC Elasticsearch предоставляет возможность регистрировать вызовы API. Это очень помогает в устранении неполадок, опцию можно активировать с помощью вкладки трассировки.
Вызовы, сделанные приложениями, по умолчанию регистрируются в системе. Чтобы отслеживать вызовы приложений и драйверов, можно включить ведение журнала драйверов. Каждый раз, когда устанавливается соединение, для драйвера создается новый журнал. Установите уровень журнала на DEBUG.
После того, как вы настроили хост, порт и параметры аутентификации, вы можете использовать опцию тестового соединения. Это поможет проверить статус подключения.
Вот как вы можете настроить DSN для подключения Elasticsearch к Tableau.
Шаг 3. Подключение к Tableau
После внесения необходимых изменений конфигурации откройте Tableau. Теперь в столбцах подключения слева выберите опцию “Other databases (ODBC)” (Другие базы данных (ODBC).
В диалоговом окне ODBC выберите «Elasticsearch DSN» из раскрывающегося списка и нажмите ОК.
Возможно, вам нужно будет предоставить сведения о подключении, такие как имя пользователя и пароль. Если снова потребуются учетные данные, откроется новое окно редактора DSN, в противном случае, поля будут заполнены автоматически после выбора правильного DSN.
Выберите вариант имени источника данных и дайте уникальное имя используемой базе данных. Считается хорошей практикой задать уникальное имя, так как это значительно упрощает пользователям идентификацию базы, из которой берутся данные.
Чтобы выбрать нужную схему, вы можете использовать выпадающий список схемы в столбце слева. Вы также можете выполнить поиск по тексту, чтобы найти нужную опцию. Теперь аналогичным образом найдите и выберите нужную таблицу и перетащите ее на холст.
Так вы можете подключить Elasticsearch к Tableau.
Ограничения данного метода:
- Этот метод иногда требует использования сторонних инструментов, которые, по сути, являются дополнениями, которые необходимо поддерживать.
- При работе со сложным JSON часто возникают ошибки, связанные с нормализацией таблиц и их объединениями.
- Этот метод приводит к задержкам обслуживания из-за перебоев, таких как обновление оборудования или программного обеспечения. Это может привести к полной потере связи.
Метод 2: Экспорт данных Elasticsearch в формате JSON
Есть уникальный способ подключить Elasticsearch к Tableau – экспортировать данные из Elasticsearch в формате JSON, а затем использовать соединитель JSON Tableau для использования и анализа данных. Чтобы начать процесс, выполните следующие шаги:
- Экспорт данных Elasticsearch с помощью Python
- Использование JSON-коннектора Tableau.
Экспорт данных Elasticsearch с помощью Python
Чтобы подключить Elasticsearch к Tableau, сначала извлеките данные с помощью Python, выполнив следующие действия:
- Шаг 1. Установите библиотеку Elasticsearch.
- Шаг 2. Создайте экземпляр для класса Elasticsearch.
- Шаг 3. Получение документа с помощью вызова API.
- Шаг 4. Использование метода pandas .series()
- Шаг 5. Создание объекта фрейма данных pandas
- Шаг 6. Перечисление и добавление объекта серии.
- Шаг 7. Использование функции .to_json()
Шаг 1. Установите библиотеку Elasticsearch.
Для установки библиотеки вы можете использовать следующую команду:
pip install elasticsearch
Аналогичным образом установите библиотеку NumPy и pandas:
pip install pandas & pip install numpy
Этот метод требует выполнения запросов на основе API для извлечения данных из базы данных. Это можно сделать с помощью класса Elasticsearch в Python.
from elasticsearch import Elasticsearch
Шаг 2. Создайте экземпляр для класса Elasticsearch
Создайте экземпляр класса Elasticsearch, а затем используйте его для вызова API. Вы можете сделать это, используя следующий код:
E_client=Elasticsearch([{‘host’: ‘localhost’, ‘port’: 9200}]) //This will help connect to the cluster. R=E_client.search(index= “some_val”,body={},size=99)
По умолчанию эта команда извлекает 10 документов. Если вам нужно большее количество документов, вы должны явно указать количество. Убедитесь, что у вас не получается очень большое число, так как это может сильно повлиять на производительность вашего ПК.
Шаг 3. Извлечение документа с помощью вызова API.
Вы можете сохранить документы, полученные в результате вызова API, в словаре. Переберите этот словарь, чтобы получить следующие документы:
E_docs=R[“hits”][“hits”]
Шаг 4. Использование метода pandas .series()
Чтобы легко экспортировать данные в нужный формат, преобразуйте словарь документов в объект pandas.core.series.Series. Сделать это можно следующим образом:
list_dict = [] d1={} d2={} d3={} list_dict+=[d1,d2,d3] list_series=[] # This is an empty list for num,doc in enumerate(list_dict): list_series+=[pandas.Series(doc)]
Шаг 5: Создание объекта фрейма данных pandas
Начните с создания пустого объекта следующим образом:
docs= pandas.DataFrame()
Шаг 6: Перечисление и добавление объекта серии
Чтобы эффективно перебрать документы, используйте функцию перечисления в цикле for Python следующим образом:
For num,docs in enumerate (E_docs): Source_data = docs[“_source”] _id = docs[“_id”] doc_data = pandas.Series(source_data, name = _id) docs=docs.append(doc_data)
Шаг 7: Использование функции .to_json()
Присущие объектам Pandas Series и DataFrame методы позволяют оптимизировать экспорт файлов различных форматов, включая to_html(), to_json() и to_csv().
json_export = docs.to_json() # return JSON data print ("nJSON data:", json_export)
Вот как вы можете извлекать данные в формате JSON для подключения Elasticsearch к Tableau.
Использование коннектор JSON в Tableau
Откройте коннектор JSON и выберите только что экспортированный файл JSON. Укажите/выберите требуемую схему, поскольку JSON не структурирован по своей структуре и требует от пользователей выбора вручную.
После того, как вы выбрали схему, вы получите вывод, представляющий данные в упорядоченном виде, как показано ниже:
Теперь вы можете анализировать данные с помощью различных визуализаций и лучше понимать, что представляют ваши данные, используя Tableau.
Вот так вы можете подключить Elasticsearch к Tableau уникальным образом.
Ограничения этого метода:
- Этот метод требует от пользователя большого количества вводимых вручную данных, также необходимо, чтобы пользователи обновляли файл JSON каждый раз, когда они хотят обновить визуализацию.
- Коннектор файлов JSON имеет ограниченную функциональность, невозможно объединить несколько файлов JSON.
- Это снижает производительность, поскольку метод зависит от файлов JSON, хранящихся на устройстве, вместо того, чтобы использовать мощности базы данных.
Заключение
В этой статье представлены различные методы, которые можно использовать для подключения Elasticsearch к Tableau. Также тут представлены некоторые сведения о концепциях, лежащих в основе каждого шага, чтобы помочь вам понять и эффективно их реализовать. Однако эти методы могут оказаться сложными, особенно для новичков, и тут Hevo спасает положение. Hevo Data, конвейер данных без кода, помогает передавать данные из источника полностью автоматизированным и безопасным способом без необходимости написания кода. Hevo с его мощной интеграцией с 100+ источниками и инструментами бизнес-аналитики, позволяет вам не только экспортировать и загружать маркетинговые данные, но также преобразовывать и обогащать их и мгновенно готовить к анализу.
Что такое Elasticsearch
Elasticsearch — это представитель кластерных NoSQL с JSON REST API.
Мы можем считать его и нереляционным хранилищем документов в формате JSON, и поисковой системой на базе полнотекстового поиска Lucene.
Аппаратная платформа — Java Virtual Machine.
Официальные клиенты доступны на Java, NET (C#), Python, Groovy, JavaScript, PHP, Perl, Ruby.
Elasticsearch разрабатывается компанией Elastic вместе со связанными проектами, называемыми Elastic Stack, — Elasticsearch, Logstash, Beats и Kibana.
Beats — легковесные агенты и отправители данных с различных устройств. Logstash собирает и обрабатывает данные зарегистрированных событий. За хранение и поиск данных отвечает Elasticsearch. Kibana визуализирует данные через web-интерфейс.
Сегодня Elastic Stack с успехом используется сервисами eBay, Adobe, Uber, Nvidia, Blizzard, Citibank, Volkswagen, Microsoft, SoundCloud, GitHub, Netflix, Amazon. Чем же привлекателен Elasticsearch в контексте поставленной задачи? Давайте разберёмся.
Простой выбор
Одним из пунктов технического задания в рамках нашего проекта было требование собирать и анализировать статистику примерно с 25 (+/- 5) тысяч различных устройств.
Аппаратные возможности, операционные системы, сетевые интерфейсы, типы и назначение устройств неоднородны — от смартфона и телевизора до инфраструктурного сервера.
Устройства находятся в отдельных зданиях (примерно 1500 зданий, в каждом от 10 до 20 устройств), обслуживаются однотипной, но изолированной от других зданий инфраструктурой.
Оценив поставленную задачу, мы поняли, что нам не нужна большая суперсистема, которую можно отнести к категории BigData и/или HighLoad. С другой стороны, любые привычные методы сохранения и обработки информации, такие как запись в текстовый файл или SQL-базу, не подходили из-за объёма и специфики данных, поскольку большая часть работы происходила с логами устройств. Сыграло свою роль и наличие дополнительной статистики, которую сообщают сервисы, запущенные на устройствах.
Также в нашем случае по оценке объёма входящих данных, скорости их поступления и озвученных задач аналитики не было необходимости отдельно строить OLTP- и OLAP-системы.
Другими словами, система предполагает сбор статистики, к тому же она обеспечивает некоторое накопление данных и показ этой истории в удобном и интересном для менеджеров и аналитиков проекта виде. В результате мы выбрали Elasticsearch как оптимальное решение.
Да и Elastic Stack в целом предназначен для решения такого класса задач.
А что, собственно, собираем?
Как говорилось ранее, устройства разные, а вот статистическая информация нас, как правило, интересует достаточно однотипная: температура и загрузка процессора, объём потребляемой памяти, время и режимы использования устройства, какие программы запускались, сетевой трафик, сколько задач выполнено, что в логи записано, какие ошибки зарегистрированы и прочие данные с устройства и об устройстве.
Что на базе собранной информации хотят получить аналитики и менеджеры?
Самый частый из встречающихся сценариев — он же был изначально озвучен в техническом задании — это сбор и хранение всей (сырой) статистики по всем устройствам и сервисам за последний месяц с последующей агрегацией по дням и группировкой по зданиям с «бессрочным» хранением полученного результата.
Raw-индексы перезаписываются каждый месяц новыми данными, Agg-индексы накапливаются по дням «бесконечно» (пока хватает дискового пространства).
Все остальные пожелания по группировке и разбивке данных, по аналитическим срезам, визуальному представлению и т. п. выполняются аналитиками и менеджерами самостоятельно с использованием как Kibana, так и Power BI.
Периодически некоторые данные, чаще всего новые, получаемые из исходных, выделяются в отдельную задачу предварительного расчёта, которая выполняется с помощью вычислительной платформы Spark «по расписанию» и сохраняется в ещё один Agg-индекс, откуда эти подготовленные данные попадают в сложные отчёты и т. д.
Немного фактов о системе
Elasticsearch, как выяснилось, прекрасно подходит для работы в пределах определённого объёма данных (2–10 терабайт в год, 20–30 миллиардов документов в индексах), а также хорошо интегрируется с кластером Spark.
Агенты (Beats) помогают на конкретном устройстве или конкретном сервере собрать информацию, которая интересует пользователей системы. С помощью этих агентов можно собирать разного рода данные: системную информацию Windows из журнала, логи операционной системы Linux, данные устройства на ОС Android, самим анализировать трафик с устройства, будь то TCP, HTTP и т. д.
Локальный для инфраструктуры каждого здания Logstash отлично справляется с отправкой данных, собираемых агентами устройств, в централизованный кластер Elasticsearch, а Kibana предоставляет удобный способ построения веб-отчётов.
Необходимые инфраструктурные ресурсы
В нашем случае используется Linux-кластер в составе 3–10 нод.
Нода — это 8 процессорных ядер, 16–32 гигабайта оперативной памяти, жёсткий диск размером 1–5 терабайт. Сеть 1 Гигабит.
Масштабируемость
Данная подсистема статистики может работать с любой сферой деятельности, где требуется сбор и анализ статистических данных среднего объёма. Это может быть обработка статистической информации с 1 000 и до 30 000 холодильников, мобильных устройств, ноутбуков, интерактивных панелей и т. д.
Когда устройств меньше, чем 1–3 тысячи, система избыточна, есть более простые решения. Количество в 10 000–30 000 единиц оптимально по объёму и скорости появления новых данных с устройств.
50 и более тысяч устройств повлекут за собой усложнение системы, и в этом случае надо выбирать другое решение.
Хотя, если мы воспринимаем 50–100 тысяч устройств как три сегмента по 15–30 тысяч, то можно просто запустить три подсистемы нашей статистики.
Основная идея заключается в том, что чем более изолированы «сектора», тем проще применить решение формата «три по тридцать».