GCP Dataproc имеет друида в альфа-версии.Как загрузить сегменты? - PullRequest
2 голосов
/ 20 сентября 2019

На странице dataproc, описывающей поддержку druid, нет раздела о том, как загружать данные в кластер.Я пытался сделать это с помощью GC Storage, но не знаю, как настроить спецификации для него, который работает.Я ожидаю, что в разделе «пожарный шланг» будут содержаться ссылки на ведро, но в Google нет примеров, как это сделать.

Каков метод загрузки данных в Druid, работающий на GCP dataproc прямо из коробки?

1 Ответ

1 голос
/ 27 сентября 2019

Я не использовал версию 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
...