Использование Apache Hive как средства для извлечения, преобразования и загрузки
Обычно перед загрузкой входных данных в целевое назначение для аналитики вам нужно очистить и преобразовать эти данные. Операции извлечения, преобразования и загрузки используются для подготовки данных и загрузки в целевое назначение. Apache Hive в HDInsight умеет принимать неструктурированные данные, обрабатывать их по определенным правилам и передавать в реляционное хранилище данных, чтобы их могли использовать системы поддержки принятия решений. При таком подходе данные извлекаются из источника. Затем сохраняются в адаптируемом хранилище, таком как большие двоичные объекты службы хранилища Azure или Azure Data Lake Storage. Затем данные преобразуются с помощью последовательности запросов Hive. Затем в Hive выполняется подготовка к массовой загрузке в целевое хранилище данных.
Обзор модели и примера использования
На следующем рисунке представлена схема примера использования и модель для автоматизации процессов извлечения, преобразования и загрузки. Входные данные преобразуются в выходные данные определенного формата. В процессе этой трансформации может изменяться форма данных, тип и даже язык. Процессы извлечения, преобразования и загрузки могут переводить имперские единицы измерения в метрические, изменять часовые пояса и повышать точность данных, чтобы новые данные в точности соответствовали тем, которые уже существуют в целевом хранилище. Процессы извлечения, преобразования и загрузки можно даже применить для объединения новых и существующих данных, чтобы поддерживать актуальность отчетов или повышать информативность существующих данных. После такой обработки приложения и службы, например средства создания отчетов, смогут получить данные в удобном для них формате.
Hadoop обычно используется в процессах ETL, которые импортируют большое количество текстовых файлов (например, CSV). Или меньшее, но часто изменяющееся количество текстовых файлов или и то, и другое. Hive — это прекрасный инструмент для подготовки данных перед отправкой в целевое назначение. Hive позволяет создать схему для CSV и применять язык запросов, близкий к SQL, чтобы создавать программы MapReduce для взаимодействия с данными.
Ниже приведены типичные этапы при работе с Hive для задач извлечения, преобразования и загрузки.
Передайте данные в Azure Data Lake Storage или в хранилище BLOB-объектов Azure.
Создайте базу данных для хранения метаданных (на основе Базы данных SQL Azure), в которой Hive будет хранить схемы данных.
Создайте кластер HDInsight и подключите хранилище данных.
Определите схему, которая будет применяться в хранилище данных при считывании данных.
DROP TABLE IF EXISTS hvac; --create the hvac table on comma-separated sensor data stored in Azure Storage blobs CREATE EXTERNAL TABLE hvac(`date` STRING, time STRING, targettemp BIGINT, actualtemp BIGINT, system BIGINT, systemage BIGINT, buildingid BIGINT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION 'wasbs://{container}@{storageaccount}.blob.core.windows.net/HdiSamples/SensorSampleData/hvac/';
Преобразуйте данные и передайте их в целевое расположение. Есть несколько способов применить Hive для преобразования и загрузки.
- Выполните с помощью Hive запросы и подготовку данных, затем сохраните данные в формате CSV в Azure Data Lake Storage или в хранилище BLOB-объектов Azure. После этого вы сможете применить внешнее средство, например SQL Server Integration Services (SSIS), для получения данных в формате CSV и их передачи в реляционную базу данных, такую как SQL Server.
- Выполняйте запросы непосредственно из Excel или C# с помощью драйвера Hive ODBC.
- Используйте Apache Sqoop для чтения подготовленных неструктурированных CSV-файлов и передачи данных в целевую реляционную базу данных.
Источники данных
Источниками данных обычно являются внешние данные, которые можно сопоставить с существующими данными в хранилище данных, например:
- социальные сети, файлы журналов, данные от датчиков и приложений, которые создают файлы данных;
- наборы данных от поставщиков данных, например статистика погоды или продаж;
- данные потоковой передачи, собранные, отфильтрованные и обработанные с помощью соответствующих средств или платформ.
Целевые назначения
С помощью Hive можно выводить данные в разные целевые объекты, в том числе:
- реляционные базы данных, например SQL Server или базу данных SQL Azure;
- Хранилище данных, например Azure Synapse Analytics.
- Excel.
- хранилища Azure для таблиц и больших двоичных объектов;
- приложения или службы, которым нужны данные в определенных форматах или в виде файлов с определенным типом структуры информации;
- Хранилище документов JSON, например Azure Cosmos DB.
Рекомендации
Модель извлечения, преобразования и загрузки обычно используется в следующих ситуациях.
*
Для загрузки потоковых или очень объемных данных (частично структурированных или неструктурированных) из внешних источников в существующую базу данных или информационную систему.
*
Для очистки, преобразования и проверки данных перед загрузкой, возможно с неоднократным проходом через кластер для преобразования.
*
Для составления регулярно обновляемых отчетов и визуализаций. Например, если создание отчета занимает слишком много времени и не может выполняться в течение дня, вы можете генерировать его по расписанию в ночное время. Для автоматического выполнения запроса Hive можно использовать Azure Logic Apps и PowerShell.
Если целевое назначение не является базой данных, прямо внутри запроса вы можете сохранить данные в файле соответствующего формата, например в CSV-файле. Затем этот файл можно затем в Microsoft Excel или Power BI.
Если в процессе извлечения, преобразования и загрузки вам нужно выполнять несколько операций с данными, уделите внимание координации этих действий. Если операции управляются внешней программой, а не внутренним рабочим процессом, оцените возможность параллельного выполнения некоторых операций и обнаружения завершения каждого задания. Зачастую проще применить механизм управления рабочим процессом, например Oozie в среде Hadoop, чем самостоятельно распределять последовательность операций внешними скриптами или программами.