Datagen — генератор данных моделирования для платформы CDP
Datagen — генератор данных моделирования для платформы CDP

Datagen

Datagen — это проект, цель которого — предоставить удобный, настраиваемый интерфейс для генерации данных в различные сервисы платформы Cloudera CDP. (Даже за пределами платформы).

что это такое ?

Это веб-сервис, предоставляющий API для генерации данных.

Данные относительности формируются в так называемой Модели. Он поставляется с предварительно созданной Моделью, но каждый может определить свою собственную Модель и предоставить ее для существенного использования данных в любом сервисе.

Данные могут быть сгенерированы для HDFS(CSV、Avro、Parquet、JSON、ORC)、HBase、Hive、Solr、Kudu、Kafka、Ozone(CSV、Avro、Parquet、JSON、ORC)илокальный файл(CSV、Avro、Parquet JSON, ОРЦ).

Генерацию данных также можно запланировать на периодическую работу.

Требовать

  • JDK 11

Datagen предназначен для работы на CDP, поэтому обычно требуется платформа CDP:

  • Доступная платформа CDP 7.1.7+ под управлением Cloudera Manager

Однако вы всегда можете запустить приложение как автономный веб-сервер, но всю настройку вам придется выполнить самостоятельно.

Если вы планируете собрать его из исходного кода:

  • Maven 3.6+
  • Ansible 2.10+
  • Jmespath

репозиторий

Код Datagen общедоступен здесь: https://github.com/frischHWC/datagen.

Файл сведений репозитория документадля содержит все подробности о том, как создать Модель, как запустить Модельк и настроить внутреннюю структуру Модели.

Установить

Datagen создан для полной интеграции с CDP, поэтому он развертывается как услуга в Cloudera Manager.

Это можно сделать двумя способами:

  • существоватьиспользовать CSD и Parcel с CM бега CDP на кластере (см.: из CSD и Parcel Установить)
  • существоватьс CM бега CDP В кластере сценарий развертывания use собирает его из кода (см.: Сборка из исходного кода Установить).

Datagen также можно запускать локально (и где угодно) как автономный сервер, но вам необходимо настроить его самостоятельно. (См.: Сборка из исходного кода Установить)

использовать CSD иParcelУстановить

Это руководство требует запускаCDP 7.1.7+платформа,и иметь право Cloudera Manager Права доступа администратора.

пожалуйста, обрати внимание,этотдадляCDP-7.1.7.1000иАвтор: ДАТАГЕН-0.2.5,для будущих версий,Пожалуйста, измените репозиторий, чтобы указать новую версию.

Настроить ЦД

Перейдите в Cloudera Manager и выполните команду Curl или Wget:

Язык кода:javascript
копировать
wget https://datagen-repo.s3.eu-west-3.amazonaws.com/csd/0.3.1/7.1.7.1000/DATAGEN-0.3.1.7.1.7.1000.jar

Скопируйте загруженный jar-файл в /opt/cloudera/csd/:

Язык кода:javascript
копировать
cp DATAGEN-*.jar /opt/cloudera/csd/

Перезапустите сервер Cloudera Manager:

Язык кода:javascript
копировать
systemctl restart cloudera-scm-server

Настроить посылку

Перейти к Cloudera Менеджер по посылкам > Parcel Repositories & В сети:

Добавьте этот публичный репозиторий места Cloudera Manager: https://datagen-repo.s3.eu-west-3.amazonaws.com/parcels/0.3.1/7.1.7.1000

Сохраните и проверьте, чтобы убедиться, что URL-адрес правильный. У вас должно быть:

Datagen Parcel теперь доступен для скачивания:

Затем распределите его:

Наконец активируйте его:

Наконец, результат должен быть:

Мастер добавления сервисов

существовать Cloudera Manager Вернитесь на домашнюю страницу и выберите Установить. Datagen кластеров.

действие по клику > Добавьте услуги.

сейчассуществовать,Может быть Datagen Добавить как услугу в CDP:

Нажмите «Продолжить», чтобы запустить мастер добавления.

Выберите, где разместить серверы Datagen (лучше всего начать с одного и при необходимости расширить его позже):

Судя по изменениям, все они должны заполниться автоматически, но рекомендуется правильно настроить свойства Ranger (их можно удалить позже):

В итоге у вас должно получиться:

существовать Прежде чем продолжить Перезапуск CMS:Clusters > Cloudera Management Служба, затем Действия > Restart。

Инициализировать службу

Прежде чем существоватьгенерированные данные, необходимо выполнить несколько шагов по инициализации предприятия.

Перейти к Datagen обслуживание исуществоватьActionsсередина:

  • существоватьместный выбор Datagen Домашний каталог
  • Выберите «Первоначальная сервисизация каталога и стратегии».

наконецшагиспользоватьпредыдущий Ranger настраивать URL, пользователь/пароль будут datagen Желаемая политика продвигается к Ranger。

После успешного выполнения этой команды вы можете смело удалять эти настройки.

  • В конце концов, вы можете к Перезапуск Cloudera Management Сервис, чтобы они могли начать мониторинг Datagen Служил.

Запустить службу

существоватьдействовать > начинать.

После появления команды вы можете просмотреть журнал роли и щелкнуть полный файл журнала:

и убедитесь, что все запускается нормально, вы должны увидеть:

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

Сервис не существует

  1. проверять csd да Стоит ли сохранятьсуществовать В/opt/cloudera/csd
  2. Перезапустите Cloudera Manager.
  3. существоватьв своем журналепроверять:/var/log/cloudera-scm-server/cloudera-scm-server.logDATAGEN CSD Он был добавлен правильно и никаких ошибок не выскакивало.

Нет показателя – ошибка внутри запроса

  1. Перезапустите службы CMS, особенно Service Monitor.
  2. тывозвращаться Можетк Проверьте местный cloudera-agent Хорошо ли он работает и можно ли получить Datagen Web Метрики захвата сервера.

Статус создания данных отсутствует: неверная конфигурация теста.

Service Monitor может не получить определенные значения конфигурации от Datagen.

  • Перейти кDatagen > Конфигурацию и внесите следующие изменения:

unexpected_exits_thresholdsВоля Warning настраиватьдляAnyи Воля Critical настраиватьдляNever。process_swap_memory_thresholdsВоля Warning настраиватьдляAnyи Воля Critical настраиватьдляNever。process_swap_memory_rate_thresholdsВоля Warning настраиватьдляAnyи Воля Critical настраиватьдляNever。log_directory_free_space_percentage_thresholdsВоля Warning настраиватьдля80и Воля Critical настраиватьдля80。

  • Перезапустите службу CMS.

Внимание: Тест отключен из-за неверной конфигурации: Проверка работоспособности достаточного количества ролей DATAGEN_SERVER киспользовать кнопку подавления безопасно игнорируется иудалить.

Генерация данных — базовый

Начнем генерацию данных!

HDFS

существовать В CM Manager:

Datagen > Actions > для HDFS производить 100 миллионов клиентов

Он запускает команду Cloudera Manager, которая выполняет различные вызовы API к веб-серверу Datagen для генерации данных, представляющих клиентов из разных стран.

Результат должен быть:

давайте проверим

существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):

Язык кода:javascript
копировать
hdfs dfs -ls /user/datagen/hdfs/customer/
Found 90 items
-rw-r--r--   3 datagen datagen     256024 2022-10-13 09:06 /user/datagen/hdfs/customer/customer-cn-0000000000.parquet
-rw-r--r--   3 datagen datagen     255393 2022-10-13 09:06 /user/datagen/hdfs/customer/customer-cn-0000000001.parquet
-rw-r--r--   3 datagen datagen     255618 2022-10-13 09:06 /user/datagen/hdfs/customer/customer-cn-0000000002.parquet

Hive

существовать Cloudera Менеджер:

Datagen > Actions > для Hive генерировать 1000 Тысячи данных датчиков

оно начинается Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,кгенерировать Данные, представляющие данные датчика。

Результат должен быть:

давайте проверим

существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):

Язык кода:javascript
копировать
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> show databases;
...
INFO  : OK
+---------------------+
|    database_name    |
+---------------------+
| datagen_industry    |
| default             |
| information_schema  |
| sys                 |
+---------------------+
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> use datagen_industry;
...
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> show tables;
...
INFO  : OK
+------------------+
|     tab_name     |
+------------------+
| plant            |
| plant_tmp        |
| sensor           |
| sensor_data      |
| sensor_data_tmp  |
| sensor_tmp       |
+------------------+
6 rows selected (0.059 seconds)
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> select * from plant limit 2;
...
INFO  : OK
+-----------------+--------------------+------------+-------------+----------------+
| plant.plant_id  |     plant.city     | plant.lat  | plant.long  | plant.country  |
+-----------------+--------------------+------------+-------------+----------------+
| 1               | Chotebor           | 49,7208    | 15,6702     | Czechia        |
| 2               | Tecpan de Galeana  | 17,25      | -100,6833   | Mexico         |
+-----------------+--------------------+------------+-------------+----------------+
2 rows selected (0.361 seconds)
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> select * from sensor limit 2;
...
INFO  : OK
+-------------------+---------------------+------------------+
| sensor.sensor_id  | sensor.sensor_type  | sensor.plant_id  |
+-------------------+---------------------+------------------+
| 70001             | motion              | 186              |
| 70002             | temperature         | 535              |
+-------------------+---------------------+------------------+
2 rows selected (0.173 seconds)
0: jdbc:hive2://ccycloud-2.lisbon.root.hwx.si> select * from sensor_data limit 2;
...
INFO  : OK
+------------------------+--------------------------------------+----------------------+
| sensor_data.sensor_id  | sensor_data.timestamp_of_production  |  sensor_data.value   |
+------------------------+--------------------------------------+----------------------+
| 88411                  | 1665678228258                        | 1895793134684555135  |
| 52084                  | 1665678228259                        | -621460457255314082  |
+------------------------+--------------------------------------+----------------------+
2 rows selected (0.189 seconds)

Ozone

существовать Cloudera Менеджер:

Datagen > Actions > для Ozone приносить 100 миллионов клиентов

Он запускает команду Cloudera Manager, которая выполняет различные вызовы API к веб-серверу Datagen для генерации данных, представляющих клиентов из разных стран.

Результат должен быть:

давайте проверим

существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):

Язык кода:javascript
копировать
ozone sh key list datagen/customer
{
"volumeName" : "datagen",
"bucketName" : "customer",
"name" : "customer-cn-0000000000.parquet",
"dataSize" : 255631,
"creationTime" : "2022-10-13T16:10:02.286Z",
"modificationTime" : "2022-10-13T16:10:07.866Z",
"replicationType" : "RATIS",
"replicationFactor" : 3
}
{
"volumeName" : "datagen",
"bucketName" : "customer",
"name" : "customer-cn-0000000001.parquet",
"dataSize" : 255633,
"creationTime" : "2022-10-13T16:10:08.187Z",
"modificationTime" : "2022-10-13T16:10:08.314Z",
"replicationType" : "RATIS",
"replicationFactor" : 3
}

HBase

существовать Cloudera Менеджер:

Datagen > Actions > К HBase генерировать 100 Тысячи дел

оно начинаетсяодин Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,кгенерировать Данные, представляющие транзакции。

Результат должен быть:

давайте проверим

существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):

Язык кода:javascript
копировать
hbase:001:0> list
TABLE
datagenfinance:transaction
1 row(s)
Took 0.9031 seconds
=> ["datagenfinance:transaction"]
hbase:002:0> count 'datagenfinance:transaction'
Current count: 1000, row: 10223641061665677647491
Current count: 2000, row: 10450220651665677774524
Current count: 3000, row: 10680209721665677628857
Current count: 4000, row: 10909219011665677828439
Current count: 5000, row: 1114021121665677841475
Current count: 6000, row: 11370585341665677806053

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

Если возникнут какие-либо ошибки, пожалуйста, пройдите Cloudera Manager или Просмотр журнала непосредственно на машине.,онироды/var/log/datagen/

Генерация данных. Часть 2.

использовать Cloudera Manager и Предопределенные операции, которые можно использовать для преобразования данных во все типы служб, работающих на вашей платформе.

Данные былисуществовать HDFS、Hive、Ozone、HBase серединагенерировать。

Прежде чем передавать данные дальше в другие сервисы, необходимо внимательно посмотреть, какие именно данные были переданы.

Введение модели

Datagen основнойдаМодель

Datagen требует одну модель (или модель по умолчанию для модели по умолчанию) каждый раз, когда вы хотите ограничить данные.

Модельдаодин JSON файл, который определяет, как должны выглядеть ваши данные.

приезжатьв настоящий моментдляконец,У вас есть только предопределенная модель.,но Datagen Полная цель да — предоставить свою собственную модель.

Мы продолжим использовать предопределенную модель.,Но существуют в следующем разделе о Модели,Мы проведем вас через процесс создания Модели и все возможности инструмента детям.

Предопределенные модели

Как вы могли догадаться, изучая приезжать, данные из категории «существующий сервис» следуют некоторой заранее определенной модели.

Вы можете ксуществовать развернуто Datagen parcel из всех Найти на машинеприезжатьэтотнекоторый Модель,этотнекоторый机器родык Следующий каталог:/opt/cloudera/parcels/DATAGEN/models/

к Вниздаты Можетксуществовать Сумкасерединаилик Внизисходный кодсерединапопытаться найтиприезжатьиз всех Модельдокументсписок:src/main/resources/models/

Язык кода:javascript
копировать
ll -R /opt/cloudera/parcels/DATAGEN/models/
/opt/cloudera/parcels/DATAGEN/models/:
total 28
drwxr-xr-x 2 root root 4096 Oct 12 02:57 customer
-rw-r--r-- 1 root root 2111 Oct 12 02:57 example-model.json
drwxr-xr-x 2 root root 4096 Oct 13 00:47 finance
-rw-r--r-- 1 root root 5926 Oct 12 02:57 full-model.json
drwxr-xr-x 2 root root 4096 Oct 13 00:47 industry
drwxr-xr-x 2 root root 4096 Oct 13 00:47 public_service


/opt/cloudera/parcels/DATAGEN/models/customer:
total 36
-rw-r--r-- 1 root root 2144 Oct 12 02:57 customer-china-model.json
-rw-r--r-- 1 root root 2154 Oct 12 02:57 customer-france-model.json
-rw-r--r-- 1 root root 2155 Oct 12 02:57 customer-germany-model.json
-rw-r--r-- 1 root root 2150 Oct 12 02:57 customer-india-model.json
-rw-r--r-- 1 root root 2150 Oct 12 02:57 customer-italy-model.json
-rw-r--r-- 1 root root 2152 Oct 12 02:57 customer-japan-model.json
-rw-r--r-- 1 root root 2150 Oct 12 02:57 customer-spain-model.json
-rw-r--r-- 1 root root 2153 Oct 12 02:57 customer-turkey-model.json
-rw-r--r-- 1 root root 2147 Oct 12 02:57 customer-usa-model.json


/opt/cloudera/parcels/DATAGEN/models/finance:
total 4
-rw-r--r-- 1 root root 1748 Oct 12 02:57 transaction-model.json


/opt/cloudera/parcels/DATAGEN/models/industry:
total 12
-rw-r--r-- 1 root root 1712 Oct 12 02:57 plant-model.json
-rw-r--r-- 1 root root 1476 Oct 12 02:57 sensor-data-model.json
-rw-r--r-- 1 root root 1549 Oct 12 02:57 sensor-model.json


/opt/cloudera/parcels/DATAGEN/models/public_service:
total 16
-rw-r--r-- 1 root root 1899 Oct 12 02:57 incident-model.json
-rw-r--r-- 1 root root 2445 Oct 12 02:57 intervention-team-model.json
-rw-r--r-- 1 root root 3445 Oct 12 02:57 weather-model.json
-rw-r--r-- 1 root root 2289 Oct 12 02:57 weather-sensor-model.json

HDFS Ва Озон

HDFS & Ozone Кнопки, созданные в разных странах 100 миллионов клиентов(использовать/opt/cloudera/parcels/DATAGEN/models/customer/Внизизразные клиенты Модель)и Воляони Толкатьприезжать Parquet в файле.

Пример данных в формате JSON:

Язык кода:javascript
копировать
{ "name" : "Loris", "id" : "790001", "birthdate" : "1987-01-11", "city" : "Stevensville", "country" : "USA", "email" : "Loris@company.us", "phone_number" : "+1 7225688066", "membership" : "SILVER" }
{ "name" : "Marcell", "id" : "490001", "birthdate" : "1950-06-22", "city" : "Pontecorvo", "country" : "Italy", "email" : "Marcell@company.it", "phone_number" : "+39 995887416", "membership" : "BRONZE" }
{ "name" : "Ryong", "id" : "520001", "birthdate" : "1941-02-05", "city" : "Yachiyo", "country" : "Japan", "email" : "Ryong@company.jp", "phone_number" : "+81 809127101", "membership" : "PLATINUM" }

HBASE

Кнопка HBase создала 1 миллион транзакций (Модель транзакции underuse/opt/cloudera/parcels/DATAGEN/models/finance/transaction-model.json).

Пример данных в формате JSON:

Язык кода:javascript
копировать
{ "sender_id" : "50902", "receiver_id" : "10391", "amount" : "0.8084345", "execution_date" : "1665728236778", "currency" : "EUR" }
{ "sender_id" : "21403", "receiver_id" : "68104", "amount" : "0.65117764", "execution_date" : "1665728285129", "currency" : "USD" }

Hive

Hive кнопка создана 100 Тысячи данных датчиков(использовать/opt/cloudera/parcels/DATAGEN/models/industry/Внизиздругой Модель)。

это Волягенерировать 100 Заводские данные, как показано ниже:

Язык кода:javascript
копировать
{ "plant_id" : "1", "city" : "Bollene", "lat" : "44,2803", "long" : "4,7489", "country" : "France" }

это Волягенерировать 100 000 Вот такие датчики (каждый может быть связан с заводом):

Язык кода:javascript
копировать
{ "sensor_id" : "1", "sensor_type" : "humidity", "plant_id" : "690" }

это Волягенерировать 1 000 000 данные датчика, подобные этим (каждый может быть связан с датчиком):

Язык кода:javascript
копировать
{ "sensor_id" : "58764", "timestamp_of_production" : "1665728724586", "value" : "-3000244563995128335" }

локальный файл

существовать Cloudera Менеджер:

Datagen > Actions > генерироватьместные данныедля CSV、JSON、AVRO、ORC、PARQUET

оно начинаетсяодин Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,киспользоватьпочти Местоиметь Можетспособныйиз Модельгенерироватьнесколько данных。

Результат должен быть:

давайте проверим

существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):

Язык кода:javascript
копировать
cat /home/datagen/customer/customer-fr-0000000000.json
{ "name" : "Josse", "id" : "120001", "birthdate" : "2001-08-03", "city" : "Meylan", "country" : "France", "email" : "Josse@company.fr", "phone_number" : "+33 444585074", "membership" : "BRONZE" }
{ "name" : "Piet", "id" : "120002", "birthdate" : "1970-06-17", "city" : "Bures-sur-Yvette", "country" : "France", "email" : "Piet@company.fr", "phone_number" : "+33 851063627", "membership" : "BRONZE" }
{ "name" : "Armand", "id" : "120003", "birthdate" : "1990-10-04", "city" : "Notre-Dame-de-Gravenchon", "country" : "France", "email" : "Armand@company.fr", "phone_number" : "+33 575158362", "membership" : "BRONZE" }
{ "name" : "Marvin", "id" : "120004", "birthdate" : "1960-10-04", "city" : "Saint-Pryve-Saint-Mesmin", "country" : "France", "email" : "Marvin@company.fr", "phone_number" : "+33 588241506", "membership" : "BRONZE" }
{ "name" : "Vivian", "id" : "120005", "birthdate" : "1994-04-28", "city" : "La Cadiere-d'Azur", "country" : "France", "email" : "Vivian@company.fr", "phone_number" : "+33 553370858", "membership" : "BRONZE" }
{ "name" : "Jakob", "id" : "120006", "birthdate" : "1976-08-02", "city" : "Chaville", "country" : "France", "email" : "Jakob@company.fr", "phone_number" : "+33 208782811", "membership" : "BRONZE" }
{ "name" : "Bo", "id" : "120007", "birthdate" : "1966-10-14", "city" : "Brignoles", "country" : "France", "email" : "Bo@company.fr", "phone_number" : "+33 068739422", "membership" : "PLATINUM" }
{ "name" : "Emilienne", "id" : "120008", "birthdate" : "1976-02-23", "city" : "Orange", "country" : "France", "email" : "Emilienne@company.fr", "phone_number" : "+33 303877991", "membership" : "BRONZE" }
{ "name" : "Elise", "id" : "120009", "birthdate" : "1965-11-28", "city" : "Cosne sur Loire", "country" : "France", "email" : "Elise@company.fr", "phone_number" : "+33 540812701", "membership" : "SILVER" }
{ "name" : "Roelof", "id" : "120010", "birthdate" : "1982-06-01", "city" : "Magny-en-Vexin", "country" : "France", "email" : "Roelof@company.fr", "phone_number" : "+33 252194443", "membership" : "BRONZE" }


cat /home/datagen/finance/transaction/transaction-0000000000.csv


sender_id,receiver_id,amount,execution_date,currency
"11292","27627","0.7721951","1665729006111","USD"
"49294","95851","0.4893235","1665729006111","EUR"
"68670","8844","0.009439588","1665729006111","USD"
"61487","46071","0.22023022","1665729006111","EUR"
"14383","57358","0.07566887","1665729006111","YEN"
"89570","96238","0.35353237","1665729006111","USD"
"66066","69065","0.87496656","1665729006111","USD"
"43894","87454","0.11435127","1665729006111","USD"
"76777","19367","0.06878656","1665729006111","EUR"
"53649","14975","0.9570634","1665729006111","EUR"


ls -R /home/datagen/industry/
/home/datagen/industry/:
plant  sensor  sensor_data


/home/datagen/industry/plant:
plant-0000000000.avro


/home/datagen/industry/sensor:
sensor-0000000000.parquet


/home/datagen/industry/sensor_data:
sensor_data-0000000000.orc

Solr

существовать Cloudera Менеджер:

Datagen > Actions > ограничить1 миллион данных о погодеприезжатьSolr

оно начинаетсяодин Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,киспользоватьпочти Местоиметь Можетспособныйиз Модельгенерироватьнесколько данных。

Результат должен быть:

Это будет включать 1 миллион таких данных о погоде (Модель погоды underuse/opt/cloudera/parcels/DATAGEN/models/public_service/weather-model.json).

Язык кода:javascript
копировать
{ "city" : "Seysses", "date" : "2021-03-25", "lat" : "43,4981", "long" : "1,3125", "wind_provenance_9_am" : "NORTH", "wind_force_9_am" : "3", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "12", "pressure_9_am" : "1004", "pressure_9_pm" : "1008", "humidity_9_am" : "46", "humidity_9_pm" : "52", "temperature_9_am" : "22", "temperature_9_pm" : "-8", "rain" : "false" }

давайте проверим

Чтобы получить доступ к пользовательскому интерфейсу SolR (войдите в систему как пользователь с достаточными привилегиями):

Kudu

существовать Cloudera Менеджер:

Datagen > Actions > ограничить1 миллион данных государственной службыприезжать Куду

оно начинаетсяодин Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,киспользоватьпочти Местоиметь Можетспособныйиз Модельгенерироватьнесколько данных。

Результат должен быть:

Это составит 1 миллион таких данных государственных служб (Модель погоды underuse/opt/cloudera/parcels/DATAGEN/models/public_service/incident-model.json).

Язык кода:javascript
копировать
{ "city" : "Le Rove", "lat" : "43,3692", "long" : "5,2503", "reporting_timestamp" : "1665732947892", "emergency" : "URGENT", "type" : "WATER" }

давайте проверим

Перейти к Hue или Impala shell и выполнить INVALIDATE METADATA Команда к обновит кеш и тогда вы сможете существоватьбаза данныхсерединасмотретьприезжать:datagenодинновый столpublicservice_incident

Kafka

Datagen > Actions > к JSON Формат будет 100 10 000 данных о погоде Kafka или Данные государственной службы Avro в Kafka

оно начинаетсяодин Cloudera Manager Заказ, да Datagen Web Сервер выполняет разные API вызов,киспользоватьпочти Местоиметь Можетспособныйиз Модельгенерироватьнесколько данных。

Результат должен быть:

Это будет включать 1 миллион таких данных о погоде (Модель погоды underuse/opt/cloudera/parcels/DATAGEN/models/public_service/weather-model.json).

Язык кода:javascript
копировать
{ "city" : "Seysses", "date" : "2021-03-25", "lat" : "43,4981", "long" : "1,3125", "wind_provenance_9_am" : "NORTH", "wind_force_9_am" : "3", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "12", "pressure_9_am" : "1004", "pressure_9_pm" : "1008", "humidity_9_am" : "46", "humidity_9_pm" : "52", "temperature_9_am" : "22", "temperature_9_pm" : "-8", "rain" : "false" }

давайте проверим

Вы можете создать Kafka-console-consumer с достаточными разрешениями и начать использовать тему для проверки создания сообщений с нуля.

Но мы изменим дляиспользовать, чтобы войти в систему как пользователь с достаточными правами в Streams Messaging Manager и просмотреть данные:

Если вы выбрали AVRO форматировать данныегенерировать,существовать Streams Messaging Manager середина:

Если вы выбрали AVRO Данные в формате ограничень, вы можете к Перейти к Schema Registry URL (использовать логин пользователя с достаточными разрешениями) и просмотреть вновь добавленный шаблон:

Наконец, если в вашем кластере установлена ​​установка SQL Stream Строитель, пожалуйста, убедитесь, что пользователь ssb и flink Темы, авторизованные доступгенерировать, авторизуйтесь приезжать Web консоль и при необходимости загрузите свой keytab исуществовать kafka Создайте таблицу по теме (к JSON Формат):

Затем создайте образец запроса для визуализации данных:

API

Datagen — больше, чем просто эти предопределенные кнопки даполностью Может Конфигурацияи Можетсделанный на заказиз。

Все предыдущие файлы данных действительно доступны только через Datagen Web API для вызова сервера.

Пользователи должны воспользоваться Datagen предоставил API для запуска данныхгенерировать。

сейчассуществовать,Мы рассмотрим один простой пример,ноеслитыдумать了解иметь关Местопоставлять API Для получения дополнительной информации см. API. часть.

первый,Перейти к Cloudera Manager > Datagen ищелкнутьDatagen Swagger UI

это будет Datagen Web Сервера Swagger Откройте одну новую карту параметров, это Swagger Воля Требоватьиспользоватьтысуществовать Установить Пользователи прошли во время/парольвернотыпровести идентификациюпроверять。еслиты没иметьпоставлять,По умолчанию Внизadminделатьдляпользователь,adminделатьдляпароль。(ты Можетксуществовать Datagen Измените это в любой момент в конфигурации настроек).

Развязка должна выглядеть так:

Если вы откроете контроллер ограничения данных, у вас должно быть много конечных точек: у каждого типа службы есть конечная точка, для которой вы хотите ограничить данные.

нас Воляиспользовать/datagen/hdfs-jsonПример конечной точки。

Нажмите на него.

ряд, партия, нить, модель

еслитыщелкнутьTry it out,Вы сможете заполнить все возможные параметры.

не бойтесь !Все параметры являются необязательными и имеют значения по умолчанию, если вы не указываете определенные параметры.

Местоиметьиспользовать Вданныегенерироватьиз API Вызов имеет как минимум 5 общие параметры:

  • rows = Количество строк, необходимое для каждого пакета данных
  • batches = Количество партий для начала (в итоге вы получите низкую цену (строка x Пакетная обработка) общее количество строк)
  • threads = для ускорения,Это может быть многопоточным (по умолчанию — однопоточным).,Рекомендуется 10 потоков.
  • указав любой Модель:
    • model_file = Путь к документу на машине, где хранится существующая Модель (например /opt/cloudera/parcels/DATAGEN/models/public_service/weather-model.json)
    • model = Загрузите модельдокументприезжать прямо со своего компьютера. swagger

Существует три параметра, связанных с аутентификацией Kerberos:

  • kerb_auth = true или false Зависит от Вданетиспользовать kerberos
  • kerb_user = kerberos Логин пользователя кгенерировать данные
  • kerb_keytab = Когда этот пользователь входит в систему, используйте keytab путь (должен быть datagen читаемый пользователем)

По умолчанию все они настроены для данных пользователей.

Есть еще 2 параметра, которые позволяют запланировать запуск:

  • Запланировано = trueилиfalse
  • delay_between_executions_seconds = Интервал времени между двумя выполнениями (к секунд за единицу)

Местоиметьэтотнекоторый参数都Волясуществовать API раздел для дальнейшего обсуждения.

Специальная конфигурация HDFS

Каждая конечная точка получателя имеет дополнительные параметры.,Позволяет полностью переопределить фактическую конфигурацию этой службы.,Это будет использоваться только для этих данных.

Для HDFS у нас есть:

  • core_site_path = путь к core-site.xml
  • hdfs_site_path = путь к hdfs-site.xml
  • hdfs_uri = hdfs://mynamservice/

Запустите пример

В этом примере мы будем использовать swagger и указать некоторые параметры к JSON Формат будетданныегенерироватьприезжать HDFS середина.

существовать swagger UI в, открыть hdfs-json конечная точка и нажмите try it out,Затемосуществлятьк Вниздействовать:

  • Воляпартиянастраиватьдля 10
  • Воляколичество строкнастраиватьдля 1000
  • Измените количество потоков на 10.
  • Воля Модельнастраиватьдля /opt/cloudera/parcels/DATAGEN/models/public_service/weather-model.json

ты Можеткщелкнутьосуществлять

Swagger Эквивалент существования будет показан ниже curl просить:

Язык кода:javascript
копировать
curl -X POST "https://ccycloud-1.lisbon.root.hwx.site:4242/datagen/hdfs-json" -H  "accept: */*" -H  "Content-Type: multipart/form-data" -F "batches=10" -F "model=/opt/cloudera/parcels/DATAGEN/models/public_service/weather-model.json" -F "rows=1000" -F "threads=10"

Он также ответит вам напрямую и сообщит, есть ли какие-либо ошибки в вашей Модели, наш ответ да:

Язык кода:javascript
копировать
{ "commandUuid": "61b9757f-78da-4773-9c5d-a3f154f2b524" , "error": "" }

вернуть команду UUID, следует использовать для проверки, используйте другой API Статус стартовых данных API роды command-runner-controller середина,сказатьдля/command/getCommandStatus。этот API Команда, которую необходимо получить UUID и вернет статус для JSON, как показано ниже:

Язык кода:javascript
копировать
{ "commandUuid": "61b9757f-78da-4773-9c5d-a3f154f2b524" , "status": "FINISHED" , "comment": "" , + "progress": "100.0" ,  "duration": "858ms" }

давайте проверим

существовать с залогиненным пользователем shell Средний (опционально использовать datagen ):

Язык кода:javascript
копировать
hdfs dfs -ls /user/datagen/hdfs/publicservice/weather/


Found 10 items
-rw-r--r--   3 datagen datagen     756988 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000000.json
-rw-r--r--   3 datagen datagen     756448 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000001.json
-rw-r--r--   3 datagen datagen     756374 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000002.json
-rw-r--r--   3 datagen datagen     756204 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000003.json
-rw-r--r--   3 datagen datagen     756878 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000004.json
-rw-r--r--   3 datagen datagen     756132 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000005.json
-rw-r--r--   3 datagen datagen     756812 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000006.json
-rw-r--r--   3 datagen datagen     757160 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000007.json
-rw-r--r--   3 datagen datagen     756216 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000008.json
-rw-r--r--   3 datagen datagen     756000 2022-10-14 00:44 /user/datagen/hdfs/publicservice/weather/weather-0000000009.json


hdfs dfs -cat /user/datagen/hdfs/publicservice/weather/weather-0000000000.json


{ "city" : "Beauchamp", "date" : "2017-03-23", "lat" : "49,0139", "long" : "2,19", "wind_provenance_9_am" : "EAST", "wind_force_9_am" : "98", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "5", "pressure_9_am" : "1003", "pressure_9_pm" : "1009", "humidity_9_am" : "25", "humidity_9_pm" : "35", "temperature_9_am" : "30", "temperature_9_pm" : "9", "rain" : "false" }
{ "city" : "La Garnache", "date" : "2016-02-19", "lat" : "46,8906", "long" : "-1,8311", "wind_provenance_9_am" : "WEST", "wind_force_9_am" : "49", "wind_provenance_9_pm" : "NORTH", "wind_force_9_pm" : "75", "pressure_9_am" : "1014", "pressure_9_pm" : "1002", "humidity_9_am" : "30", "humidity_9_pm" : "8", "temperature_9_am" : "5", "temperature_9_pm" : "33", "rain" : "false" }
{ "city" : "Escoublac", "date" : "2018-04-10", "lat" : "47,2858", "long" : "-2,3922", "wind_provenance_9_am" : "NORTH", "wind_force_9_am" : "62", "wind_provenance_9_pm" : "NORTH", "wind_force_9_pm" : "111", "pressure_9_am" : "1019", "pressure_9_pm" : "1013", "humidity_9_am" : "77", "humidity_9_pm" : "56", "temperature_9_am" : "-1", "temperature_9_pm" : "16", "rain" : "true" }
{ "city" : "Anse", "date" : "2019-06-13", "lat" : "45,9356", "long" : "4,7194", "wind_provenance_9_am" : "WEST", "wind_force_9_am" : "96", "wind_provenance_9_pm" : "EAST", "wind_force_9_pm" : "114", "pressure_9_am" : "1005", "pressure_9_pm" : "1009", "humidity_9_am" : "44", "humidity_9_pm" : "46", "temperature_9_am" : "3", "temperature_9_pm" : "21", "rain" : "false" }
{ "city" : "Dammarie-le-Lys", "date" : "2015-07-24", "lat" : "48,5177", "long" : "2,6402", "wind_provenance_9_am" : "EAST", "wind_force_9_am" : "120", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "87", "pressure_9_am" : "1006", "pressure_9_pm" : "1012", "humidity_9_am" : "68", "humidity_9_pm" : "21", "temperature_9_am" : "-9", "temperature_9_pm" : "-1", "rain" : "false" }
{ "city" : "Saint-Remy-les-Chevreuse", "date" : "2021-10-05", "lat" : "48,7058", "long" : "2,0719", "wind_provenance_9_am" : "SOUTH", "wind_force_9_am" : "62", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "71", "pressure_9_am" : "1017", "pressure_9_pm" : "1007", "humidity_9_am" : "70", "humidity_9_pm" : "95", "temperature_9_am" : "33", "temperature_9_pm" : "-7", "rain" : "true" }
{ "city" : "Vouneuil-sous-Biard", "date" : "2020-07-06", "lat" : "46,5731", "long" : "0,2714", "wind_provenance_9_am" : "EAST", "wind_force_9_am" : "11", "wind_provenance_9_pm" : "EAST", "wind_force_9_pm" : "21", "pressure_9_am" : "1019", "pressure_9_pm" : "1017", "humidity_9_am" : "55", "humidity_9_pm" : "20", "temperature_9_am" : "5", "temperature_9_pm" : "23", "rain" : "false" }
{ "city" : "Tourves", "date" : "2016-05-07", "lat" : "43,4081", "long" : "5,9239", "wind_provenance_9_am" : "NORTH", "wind_force_9_am" : "10", "wind_provenance_9_pm" : "WEST", "wind_force_9_pm" : "39", "pressure_9_am" : "1019", "pressure_9_pm" : "1000", "humidity_9_am" : "60", "humidity_9_pm" : "93", "temperature_9_am" : "0", "temperature_9_pm" : "29", "rain" : "false" }

Базовыйданныегенерироватьзакончился,Теперь вы можете продолжать создавать свою собственную модель.,или если хочешь,Вы можете начать использовать API

Модель

Модельдаодин простой JSON документ, описывает, какой тип данных должен быть сокращен, где они существуют, и позволяет указать некоторые конкретные параметры.

Структура модели

один Модельдокумент Зависит от 4 Состоит из частей (каждая часть представляет собой массив):

Язык кода:javascript
копировать
{
"Fields": [


],
"Table_Names": [


],
"Primary_Keys": [


],
"Options": [


]
}
  • FieldsСписок Внетыдуматьхотетьгенерироватьиз всех Поле(Список)и его виды и т. д.......
  • Table_Namesданабор ключей/ценить,Используется для определения того, где должны быть сосредоточены данные.
  • Primary_Keysдаодинключ/ценитьмножество,Он используется для определения первичного ключа для kafka, kudu и hbase.
  • Optionsданабор ключей/ценить,Используется для определения некоторых конкретных свойств (таких как коэффициент копирования, буфер и т. д.).

Давайте более подробно рассмотрим каждую часть ниже.

Fields

Поля — это список объектов Field.

Поле — это объект, состоящий как минимум из двух обязательных параметров:

  • name:Полеизимясказать
  • type : тип поля

Затем возможно несколько необязательных параметров в зависимости от их типа:

  • минимальное значение
  • максимальное значение
  • длина
  • возможные значения
  • возможные значения Взвешенный
  • фильтр
  • состояние

Давайте рассмотрим различные типы полей и их возможные параметры.

Тип поля — базовый

Существует много разных типов Поле.,здесь да Базовый,Самоочевидно:

  • STRING один alphaNumeric Строка (длина означает длину строки, если не настроена, по умолчанию используется значение для 20)
  • STRINGAZ один Буквы, а не цифрыиз Строка (длина означает длину строки, если не настроена, по умолчанию используется значение для 20)
  • INTEGER
  • INCREMENT_INTEGER целочисленное приращение на строку
  • INCREMENT_LONG Увеличение каждой строки long
  • BOOLEAN
  • FLOAT
  • LONG
  • TIMESTAMP
  • BYTES length длина, представляющая массив байтов, по умолчанию для 20
  • Случайная строка HASHMD5 Хэш (длина представляет размер массива байтов, значение по умолчанию — для 32)
  • BLOB По умолчанию 1 МБмассив байтов(lengthповерхность Показыватьмассив байтовиздлина)(Используйте с осторожностью)

Некоторые примеры:

Язык кода:javascript
копировать
{
"name": "size",
"type": "INTEGER"
}
{
"name": "bool",
"type": "BOOLEAN"
}
{
"name": "startDate",
"type": "TIMESTAMP"
}

Некоторые примеры минимальной, максимальной и длины:

Целое число от 18 до 99:

Язык кода:javascript
копировать
{
"name": "age",
"type": "INTEGER",
"min": 18,
"max": 99
}

10-байтовый массив байтов:

Язык кода:javascript
копировать
{
"name": "bytesLittleArray",
"type": "BYTES",
"length" : 10
}

Примеры возможных значений:

существовать possible_values Строка для выбора между значениями, определенными в:

Язык кода:javascript
копировать
{
"name": "department",
"type": "STRING",
"possible_values": ["hr", "consulting", "marketing", "finance"]
}

существовать possible_values_weighted Строка для выбора между значениями, определенными в , каждое значение имеет разный вес (сумма всех идля 100): (существовать В этом случае будет 70% изBRONZE, 20% изSILVER, 8% изGOLD, 2% изPLATINUM

Язык кода:javascript
копировать
{
"name": "membership",
"type": "STRING",
"possible_values_weighted": {
"BRONZE": 70,
"SILVER": 20,
"GOLD": 8,
"PLATINUM": 2
}
}

Тип поля – Расширенный

Это более «продвинутые» типы:

  • BIRTHDATE Дата между 1910 год 2020 между годами (но вы можете установить свои собственные ограничения)
  • NAME из более чем 20,000 имена, извлеченные из словаря имен (можно фильтровать по стране/региону)
  • COUNTRY Название страны взято из словаря
  • номер телефонаA 10 цифровое число, которому предшествует международный индикатор (можно фильтровать по стране)_
  • EMAIL _string Форма для (.|)@(gaagle.com|yahaa.com|uutlook.com|email.fr)_
  • IP к Ipv4 Официальное представительство IP Строка: 0-255.0-255.0-255.0-255
  • UUID один уникальный универсальный идентификатор: xxxx-xxxx-xxxx-xxxx
  • CITY Объект, представляющий существующий город (название, широту, долготу, страну), состоящий из более чем 10,000 Словарь нескольких городов, это поле принимает только имена (можно фильтровать по стране)
  • CSV взято из данного CSV Объекты документа
  • LINK одна строка, значение которой взято из другого поля, в настоящее время из CITY или CSV Поле

Несколько основных примеров:

Язык кода:javascript
копировать
{
"name": "name",
"type": "NAME",
"filters": ["USA"]
}
{
"name": "birthdate",
"type": "BIRTHDATE",
"min": "1/1/1955",
"max": "1/1/1999"
}

городское поле

City это специальное поле, которое загружает глобальную 40K+ Словарь городов, к и связанных с ними широт, долгот и стран.

Он может фильтровать по одной или нескольким странам.

В следующем примере создаются 4 поля:

  • Название города (только во Франции и Испании)
  • Широта этого города (предоставляется klatitude)
  • Долгота города (доступная длина)
  • Страна, в которой расположен этот город (доступно как страна)
Язык кода:javascript
копировать
{
"name": "city",
"type": "CITY",
"filters": ["France", "Spain"]
},
{
"name": "city_lat",
"type": "LINK",
"conditionals": {
"link": "$city.lat"
}
},
{
"name": "city_long",
"type": "LINK",
"conditionals": {
"link": "$city.long"
}
},
{
"name": "city_country",
"type": "LINK",
"conditionals": {
"link": "$city.country"
}
}

CSV-поля

Он особенный, и он прочитает путь к файлу CSV, загрузите его в память и проанализируйте.

К этому можно применить фильтр и создать другие Поле, производные от этого Поле.

Например,нассуществовать/opt/cloudera/parcels/DATAGEN/dictionaries/person_test.csvсерединаиметьэтотиндивидуальный CSV :

Язык кода:javascript
копировать
name;department;country
francois;PS;France
kamel;SE;France
thomas;RH;Germany
sebastian;PS;Spain

Мы можем создать два Поле:

  • одинда Личные имена (отфильтровано по стране, где должна находиться да Франция)
  • Отдел, к которому принадлежит этот человек
Язык кода:javascript
копировать
{
"name": "person",
"type": "CSV",
"filters": ["country=France"],
"file": "/opt/cloudera/parcels/DATAGEN/dictionaries/person_test.csv",
"field": "name"
},
{
"name": "person_department",
"type": "LINK",
"conditionals": {
"link": "$person.department"
}
}

Условия - Официальные

Условие — это объект, который позволяет определять зависимости от других полей.

чиновник,даиспользовать ВОценивать${field_name}заменятьдля Чтоценитьиз Расположениеизчиновник,Например:

Язык кода:javascript
копировать
{
"name": "starting_hour",
"type": "INTEGER",
"min": 0,
"max": 16
},
{
"name": "finished_hour",
"type": "INTEGER",
"conditionals": {
"formula": "$starting_hour + 8"
}
}

Состояние - Инъекция

Условие — это объект, который позволяет определять зависимости от других полей.

инъекция,даодин строка,Чтосередина${field_name}одеялозаменятьдляониизценить,Например:

Язык кода:javascript
копировать
{
"name": "email",
"type": "STRING",
"conditionals": {
"injection": "${name}@company.it"
}
}

Условие - строка условия

Условие — это объект, который позволяет определять зависимости от других полей.

состояние строки да серия строк, рассчитанная по одному,Если одиндля верно,Тогда значение настройкидля является правильным выражением.

Каждая строка условия состоит из имени поля (заданного $ отчет), состоящий из условия формы, имя поля заменяется его значением, оператор ( <, >, =, !=) Воляпроверить определениеизценитьили Поле(也одеялозаменять)。состояние ХОРОШОМожетк Зависит отиспользовать&(AND) или|(OR) Оператор состоит из нескольких проверок.

Пример:

Язык кода:javascript
копировать
{
"name": "rain",
"type": "STRING",
"conditionals": {
"$humidity_9_am>70 & $temperature_9_am<20 & $wind_force_9_am<80" : "true",
"$humidity_9_pm>70 & $temperature_9_pm<20 & $wind_force_9_am<80" : "true",
"$wind_provenance_9_am=NORTH & $wind_force_9_am>80" : "true",
"$wind_provenance_9_pm=NORTH & $wind_force_9_pm>80" : "true",
"$humidity_9_pm>70 & $temperature_9_pm<25 & $pressure_9_pm<1010": "true",
"$humidity_9_am>70 & $temperature_9_am<25 & $pressure_9_am<1010": "true",
"default" : "false"
}
}

имя таблицы

Это доступные ключи, которые можно использовать для настройки места расположения данных:

  • HDFS_FILE_PATH
  • HDFS_FILE_NAME
  • HBASE_TABLE_NAME
  • HBASE_NAMESPACE
  • KAFKA_TOPIC
  • OZONE_VOLUME
  • OZONE_BUCKET
  • OZONE_KEY_NAME
  • OZONE_LOCAL_FILE_PATH
  • SOLR_COLLECTION
  • HIVE_DATABASE
  • HIVE_HDFS_FILE_PATH
  • HIVE_TABLE_NAME
  • HIVE_TEMPORARY_TABLE_NAME
  • KUDU_TABLE_NAME
  • LOCAL_FILE_PATH
  • LOCAL_FILE_NAME
  • AVRO_NAME

Primary_Keys

Все доступные ключи для этих дадля определенных конфигураций сервиса:

  • KAFKA_MSG_KEY
  • HBASE_PRIMARY_KEY
  • KUDU_PRIMARY_KEYS
  • KUDU_HASH_KEYS
  • KUDU_RANGE_KEYS

Параметры

Это дадля определенных сервисов настраивает все доступные ключи для Базовыхнастроек: **

  • HBASE_COLUMN_FAMILIES_MAPPING Это сопоставление должно иметь форму: «CF:col1,col2;CF2:col5».
  • SOLR_SHARDS
  • SOLR_REPLICAS
  • KUDU_REPLICAS
  • ONE_FILE_PER_ITERATION
  • KAFKA_MESSAGE_TYPE
  • KAFKA_JAAS_FILE_PATH
  • SOLR_JAAS_FILE_PATH
  • HIVE_THREAD_NUMBER
  • HIVE_ON_HDFS
  • HIVE_TEZ_QUEUE_NAME
  • CSV_HEADER
  • DELETE_PREVIOUS
  • PARQUET_PAGE_SIZE
  • PARQUET_ROW_GROUP_SIZE
  • PARQUET_DICTIONARY_PAGE_SIZE
  • PARQUET_DICTIONARY_ENCODING
  • KAFKA_ACKS_CONFIG
  • KAFKA_RETRIES_CONFIG
  • KUDU_BUCKETS
  • KUDU_BUFFER
  • KUDU_FLUSH
  • OZONE_REPLICATION_FACTOR
  • HDFS_REPLICATION_FACTOR

Как создать пример модели?

Давайте создадим одну простую модель, чтобы переместить некоторые данные в общедоступный документ Hive:

Я хочу, чтобы что-то представляло сотрудников:

  • Имя
  • Город, который они называют
  • их день рождения
  • ихизномер телефона
  • Многолетний опыт работы компании
  • Идентификатор сотрудника (6 цифр)
  • Их отделы (включая HR, консалтинг, финансы, продажи, инжиниринг, администрацию, маркетинг)

Кстати,Штаб-квартира компании находится в Германии.,Для всех сотрудников для.

Местокэтотдафинальныйиз JSON I результат:

Язык кода:javascript
копировать
{
"Fields": [
{
"name": "name",
"type": "NAME",
"filters": ["Germany"]
},
{
"name": "city",
"type": "CITY",
"filters": ["Germany"]
},
{
"name": "phone_number",
"type": "PHONE",
"filters": ["Germany"]
},
{
"name": "years_of_experience",
"type": "INTEGER",
"min": 0,
"max": 10
},
{
"name": "employee_id",
"type": "INCREMENT_INTEGER",
"min": 123456
},
{
"name": "department",
"type": "STRING",
"possible_values": ["HR", "CONSULTING", "FINANCE", "SALES", "ENGINEERING", "ADMINISTRATION", "MARKETING"]
}
],
"Table_Names": [
{"HIVE_HDFS_FILE_PATH": "/user/datagen/hive/employee_model/"},
{"HIVE_DATABASE": "datagen_test"},
{"HIVE_TABLE_NAME":  "employee_model"},
{"HIVE_TEMPORARY_TABLE_NAME":  "employee_model_tmp"},
{"AVRO_NAME":  "datagenemployee"}
],
"Primary_Keys": [
],
"Options": [
]
}

Тестовая модель

хотетьсуществовать Начать генерацию данных До Тестовая модель,Можеткиспользовать API Проверьте это.

существовать model-tester-controller Далее API /model/testВоля Модельпутьделатьдлявходитьилипрямойзагрузить Модельивозвращатьсяиспользоватьэтот Модельгенерироватьиз一ХОРОШО。

Результат:

Язык кода:javascript
копировать
{ "name" : "Gerhilt", "city" : "Beelen", "phone_number" : "+49 299776078", "years_of_experience" : "2", "employee_id" : "123457", "department" : "FINANCE" }

Начать генерацию данных

сейчассуществовать,мы готовы,использоватьпоказнойилипрямойвызов API(использовать curl、postman или что-нибудь еще), мы Начаем генерацию данные, как показано ниже:

команда скручивания:

Язык кода:javascript
копировать
curl -X POST "https://ccycloud-1.lisbon.root.hwx.site:4242/datagen/hive" -H  "accept: */*" -H  "Content-Type: multipart/form-data" -F "batches=10" -F "model_file=@model-test.json;type=application/json" -F "rows=10000" -F "threads=10"

Верните следующий UUID:

Язык кода:javascript
копировать
{ "commandUuid": "1567dfba-a8f9-4da9-b389-9bc30f4ec1d5" , "error": "" }

существовать Datagen Webserver бревносередина,нас Можетксуществовать Смотрите в концеприезжать:

давайте проверим

Если у вас достаточно прав для входа в систему, чтобы приезжать hue (илиbeeline) у нас будет одна новая база данных:datagen_test,Чтосередина Сумка含одинповерхностьemployee_modelи一некоторыйданные:

Конфигурация генерации данных

позволить Datagen Знание того, как подключиться к различным службам, потребует некоторой входной конфигурации.

Файл Application.properties

Настройте базовый документapplication.properties, существующий в локальной среде выполнения, фактически создав инъекцию среды выполнения CDP.

Должендокументразвертыватьсуществовать CDP Чжунши имеет следующие разрешения: 400 datagen:datagenиироды Каталог запуска:/var/run/cloudera-scm-agent/process/DATAGEN-XXXXXXX/service.properties/

У каждого типа сервиса есть раздел для загрузки данных, который можно без риска пустовать.

Ranger

существовать CDP При работе на да это не требуется, но можно киспользовать ADMIN Роль определяет пользователя Ranger и его пароль.

этоттолько Зависит отInitialize service dirs and policies命令использовать Всуществовать Ranger Создайте необходимую политику по умолчанию в формате .

Если не настраивать, вам придется создавать необходимые политики самостоятельно.

ПРИМЕЧАНИЕ. Если у вас есть другие пути/база данные/тема ограничивать данные без да datagen Путь по умолчанию /база данные/тема, необходимые пользователю datagen Предоставьте разрешения, если вы не укажете другого пользователя

Настройки в Cloudera Manager

Cloudera Manager для Мы сделали кучу автоматических настроек, например kerberos или auto-TLS。

существовать Cloudera Manager середина,существоватьDatagen > ConfigurationВниз,Вы можете просмотреть все объекты размещения,Вы можете ознакомиться с некоторыми автоматическими настройками,А другие нет.

Самое главное даавтообнаружение (описано ниже).

Все свойства передаются на веб-сервер до начала внедрения документа приложения и существования.

автообнаружение

При запуске Datagen Воляapplication.propertiesнагрузкаприезжать Памятьсерединаи继续进ХОРОШОМестопредикатизавтообнаружение。

существовать CDP серединанастраиватьчас,Datagen(еслиcm.autodiscoveryдля true)Воляиспользовать CM APIавтообнаружениеВсе услуги.(пользователь Не нужно ничего указывать)。

это也Можетспособный依赖ВописыватьдляAUTO-DISCOVERYиз Поле,Эти Поле заполняются по умолчанию.

Эти поляки,Справочные свойствадокумент,нравитьсяhdfs-site.xml、hive-site.xmlждать……иметь了этотиндивидуальный,Datagen Разберите эти файлы и автоматически настройте все возможные дополнительные поля.

После запуска,ты Можетксуществовать Datagen Web Server Я видел этот журнал:

еслииспользовать CM автообнаружение:

Язык кода:javascript
копировать
9:35:04.701 AM INFO PropertiesLoader [main] Going to auto-discover hbase.zookeeper.quorum with CM API
9:35:04.701 AM   INFO PropertiesLoader [main] Going to auto-discover hbase.zookeeper.port with CM API

если Нетиспользовать CM автообнаружениено Конфигурациядокументавтообнаружение:

Язык кода:javascript
копировать
2022-10-13 13:33:49,220 INFO  [main] com.cloudera.frisch.randomdatagen.config.PropertiesLoader: Going to auto-discover hbase.zookeeper.quorum
2022-10-13 13:33:49,222 DEBUG [main] com.cloudera.frisch.randomdatagen.Utils: Return value: server_zk1,server_zk_2,server_zk_3 from file: dev-support/test_files/hbase-site.xml for property: hbase.zookeeper.quorum
2022-10-13 13:33:49,222 INFO  [main] com.cloudera.frisch.randomdatagen.config.PropertiesLoader: Going to auto-discover hbase.zookeeper.port
2022-10-13 13:33:49,223 DEBUG [main] com.cloudera.frisch.randomdatagen.Utils: Return value: 2181 from file: dev-support/test_files/hbase-site.xml for property: hbase.zookeeper.property.clientPort

Настройки в API

Каждый раз, когда создается команда генерировать данные, первое, что она делает, — это получает настроенную карту памяти и копирует.

Затем,Пользователи могут предоставлять любую конфигурацию в своих вызовах API.,это будет только针верно Долженделатьохват отраслисейчасиметь Конфигурация,И на других это никак не влияет. также,Пользователи ничего не могут определить,При запуске по умолчанию будет использоваться фактическая конфигурация по умолчанию.

Это также означает, что теоретически вы можете передавать данные любому уважаемому Datagen использоватьиз API внешние услуги (например, внешний kafka изkafka-client-2.5 )。

Вы также можете киспользовать API для обслуживания разных пользователей (через keytab и директор), эти пользователи будут datagen Используется для предотвращения данных, которых следует избегать пользователям. datagen Создайте конкретные стратегии.

Оригинальная ссылка: https://frischhwc.github.io/datagen.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose