Lookups API
Lookups API
Apache Druid의 lookup을 구성·업데이트·조회·관리하는 API 엔드포인트를 다룹니다. 벌크 업데이트부터 개별 lookup 상태 확인까지 설명해요.
출처: 문서
본문
이 문서는 Apache Druid의 lookup을 구성, 업데이트, 조회, 관리하기 위한 API 엔드포인트를 설명합니다.
Lookup 구성하기
벌크 업데이트 (Bulk update)
lookup은 JSON 객체를 /druid/coordinator/v1/lookups/config에 POST해서 벌크 업데이트할 수 있어요. JSON 객체의 형식은 다음과 같습니다.
{
"<tierName>": {
"<lookupName>": {
"version": "<version>",
"lookupExtractorFactory": {
"type": "<someExtractorFactoryType>",
"<someExtractorField>": "<someExtractorValue>"
}
}
}
}
"version"은 사용자가 할당하는 임의의 문자열이라는 점을 기억하세요. 기존 lookup을 업데이트할 때는 사전순으로 더 높은(lexicographically higher) 버전을 지정해야 합니다.
예를 들어, config는 다음과 같은 형태일 수 있어요.
{
"__default": {
"country_code": {
"version": "v0",
"lookupExtractorFactory": {
"type": "map",
"map": {
"77483": "United States"
}
}
},
"site_id": {
"version": "v0",
"lookupExtractorFactory": {
"type": "cachedNamespace",
"extractionNamespace": {
"type": "jdbc",
"connectorConfig": {
"createTables": true,
"connectURI": "jdbc:mysql:\/\/localhost:3306\/druid",
"user": "druid",
"password": "diurd"
},
"table": "lookupTable",
"keyColumn": "country_id",
"valueColumn": "country_name",
"tsColumn": "timeColumn"
},
"firstCacheTimeout": 120000,
"injective": true
}
},
"site_id_customer1": {
"version": "v0",
"lookupExtractorFactory": {
"type": "map",
"map": {
"847632": "Internal Use Only"
}
}
},
"site_id_customer2": {
"version": "v0",
"lookupExtractorFactory": {
"type": "map",
"map": {
"AHF77": "Home"
}
}
}
},
"realtime_customer1": {
"country_code": {
"version": "v0",
"lookupExtractorFactory": {
"type": "map",
"map": {
"77483": "United States"
}
}
},
"site_id_customer1": {
"version": "v0",
"lookupExtractorFactory": {
"type": "map",
"map": {
"847632": "Internal Use Only"
}
}
}
},
"realtime_customer2": {
"country_code": {
"version": "v0",
"lookupExtractorFactory": {
"type": "map",
"map": {
"77483": "United States"
}
}
},
"site_id_customer2": {
"version": "v0",
"lookupExtractorFactory": {
"type": "map",
"map": {
"AHF77": "Home"
}
}
}
}
}
맵에 있는 모든 항목은 기존 항목을 UPDATE합니다. 삭제되는 항목은 없어요.
Lookup 업데이트
/druid/coordinator/v1/lookups/config/{tier}/{id}로 특정 lookup extractor factory에 POST하면 해당 extractor factory를 생성하거나 업데이트합니다.
예를 들어 /druid/coordinator/v1/lookups/config/realtime_customer1/site_id_customer1로의 POST는 다음을 포함할 수 있습니다.
{
"version": "v1",
"lookupExtractorFactory": {
"type": "map",
"map": {
"847632": "Internal Use Only"
}
}
}
이것은 realtime_customer1 티어의 site_id_customer1 lookup을 위 정의로 교체합니다.
lookup extractor factory를 업데이트할 때마다 고유한 버전 식별자를 할당하세요. 그렇지 않으면 호출이 실패합니다.
모든 lookup 가져오기
/druid/coordinator/v1/lookups/config/all에 GET하면 모든 티어의 알려진 모든 lookup 스펙을 반환합니다.
Lookup 가져오기
특정 lookup extractor factory에 대한 GET은 /druid/coordinator/v1/lookups/config/{tier}/{id}로 수행됩니다.
앞의 예시를 사용하면, /druid/coordinator/v1/lookups/config/realtime_customer2/site_id_customer2에 GET하면 다음을 반환해야 합니다.
{
"version": "v1",
"lookupExtractorFactory": {
"type": "map",
"map": {
"AHF77": "Home"
}
}
}
Lookup 삭제
/druid/coordinator/v1/lookups/config/{tier}/{id}에 DELETE하면 클러스터에서 해당 lookup을 제거합니다. 그것이 티어의 마지막 lookup이라면 티어도 함께 삭제됩니다.
티어 삭제
/druid/coordinator/v1/lookups/config/{tier}에 DELETE하면 클러스터에서 해당 티어를 제거합니다.
티어 이름 목록
/druid/coordinator/v1/lookups/config에 GET하면 동적 구성에 알려진 티어 이름 목록을 반환합니다. 동적 구성에 알려진 것 외에 클러스터에서 현재 활성화된 티어 목록까지 찾으려면 /druid/coordinator/v1/lookups/config?discover=true처럼 discover=true 파라미터를 추가할 수 있어요.
Lookup 이름 목록
/druid/coordinator/v1/lookups/config/{tier}에 GET하면 해당 티어의 알려진 lookup 이름 목록을 반환합니다.
이 엔드포인트들은 구성된 lookup이 Historical 같은 lookup 사용 프로세스로 전파되는 상태를 파악하는 데 사용할 수 있어요.
Lookup 상태 (Lookup status)
모든 lookup의 로드 상태 목록
GET /druid/coordinator/v1/lookups/status (선택적 쿼리 파라미터 detailed)
티어 안의 lookup의 로드 상태 목록
GET /druid/coordinator/v1/lookups/status/{tier} (선택적 쿼리 파라미터 detailed)
단일 lookup의 로드 상태 목록
GET /druid/coordinator/v1/lookups/status/{tier}/{lookup} (선택적 쿼리 파라미터 detailed)
모든 프로세스의 lookup 상태 목록
GET /druid/coordinator/v1/lookups/nodeStatus — 선택적 쿼리 파라미터 discover를 사용해 다른 Druid 노드가 광고하는 티어를 찾거나, 기본적으로 모든 구성된 lookup 티어를 반환합니다. 기본 응답에는 각 노드에서 로드되었거나 로드 중이거나 드롭 중인 lookup이 티어별로, 완전한 lookup 스펙과 함께 포함됩니다. 선택적 쿼리 파라미터 detailed=false를 추가하면 완전한 스펙 대신 lookup의 version만 포함합니다.
티어 안 프로세스의 lookup 상태 목록
GET /druid/coordinator/v1/lookups/nodeStatus/{tier}
단일 프로세스의 lookup 상태 목록
GET /druid/coordinator/v1/lookups/nodeStatus/{tier}/{host:port}
내부 API (Internal API)
Peon, Router, Broker, Historical 프로세스는 모두 lookup 구성을 사용할 수 있어요. 이 프로세스들이 자신의 lookup을 나열/로드/드롭하는 데 사용하는 내부 API가 /druid/listen/v1/lookups에서 시작됩니다. 이들은 클러스터 전역 동적 구성과 동일한 반환 값 규칙을 따릅니다. 다음 엔드포인트는 디버깅 목적으로만 사용할 수 있고 그 외에는 사용할 수 없어요.
Lookup 가져오기
프로세스의 /druid/listen/v1/lookups에 GET하면 현재 프로세스에서 활성화된 모든 lookup의 JSON 맵을 반환합니다. 반환 값은 lookup과 그 extractor factory의 JSON 맵이에요.
{
"site_id_customer2": {
"version": "v1",
"lookupExtractorFactory": {
"type": "map",
"map": {
"AHF77": "Home"
}
}
}
}
Lookup 가져오기
프로세스의 /druid/listen/v1/lookups/some_lookup_name에 GET하면 some_lookup_name으로 식별되는 lookup의 LookupExtractorFactory를 반환합니다. 반환 값은 factory의 JSON 표현입니다.
{
"version": "v1",
"lookupExtractorFactory": {
"type": "map",
"map": {
"AHF77": "Home"
}
}
}
더 알아보기 (Learn more)
- lookup 구성의 전체 개념은 lookups 문서를 참고하세요.
- Coordinator API 전반은 data-management 및 관련 API 문서에서 확인해 보세요.