Я не использовал версию Druaproc Datapro, но у меня есть небольшой кластер, работающий на виртуальной машине Google Compute.Я получаю из него данные из GCS с помощью расширения Druid в облачном хранилище Google - https://druid.apache.org/docs/latest/development/extensions-core/google.html
. Чтобы включить расширение, необходимо добавить его в список расширений в файле Druid common.properties
:
druid.extensions.loadList=["druid-google-extensions", "postgresql-metadata-storage"]
Для получения данных из GCS я отправляю HTTP-запрос POST на http://druid-overlord-host:8081/druid/indexer/v1/task
Тело запроса POST содержит файл JSON со спецификацией приема (см. Раздел ["ioConfig"] ["firehose"])):
{
"type": "index_parallel",
"spec": {
"dataSchema": {
"dataSource": "daily_xport_test",
"granularitySpec": {
"type": "uniform",
"segmentGranularity": "MONTH",
"queryGranularity": "NONE",
"rollup": false
},
"parser": {
"type": "string",
"parseSpec": {
"format": "json",
"timestampSpec": {
"column": "dateday",
"format": "auto"
},
"dimensionsSpec": {
"dimensions": [{
"type": "string",
"name": "id",
"createBitmapIndex": true
},
{
"type": "long",
"name": "clicks_count_total"
},
{
"type": "long",
"name": "ctr"
},
"deleted",
"device_type",
"target_url"
]
}
}
}
},
"ioConfig": {
"type": "index_parallel",
"firehose": {
"type": "static-google-blobstore",
"blobs": [{
"bucket": "data-test",
"path": "/sample_data/daily_export_18092019/000000000000.json.gz"
}],
"filter": "*.json.gz$"
},
"appendToExisting": false
},
"tuningConfig": {
"type": "index_parallel",
"maxNumSubTasks": 1,
"maxRowsInMemory": 1000000,
"pushTimeout": 0,
"maxRetry": 3,
"taskStatusCheckPeriodMs": 1000,
"chatHandlerTimeout": "PT10S",
"chatHandlerNumRetries": 5
}
}
}
Пример команды cURL для запуска задачи загрузки в Druid (spec.json
содержит JSON из предыдущего раздела):
curl -X 'POST' -H 'Content-Type:application/json' -d @spec.json http://druid-overlord-host:8081/druid/indexer/v1/task