컴퓨팅 시스템 테이블 참조
Important
이 시스템 테이블은 공개 미리 보기로 제공됩니다. 테이블에 액세스하려면 system
카탈로그에서 스키마를 사용하도록 설정해야 합니다. 자세한 내용은 시스템 테이블 스키마 사용을 참조하세요.
이 문서에서는 컴퓨팅 시스템 테이블에 대한 참조 가이드를 제공합니다. 다음 테이블을 사용하여 계정에서 다목적 및 작업 컴퓨팅의 활동 및 메트릭을 모니터링할 수 있습니다.
clusters
: 계정에 컴퓨팅 구성을 기록합니다.node_types
: 하드웨어 정보를 포함하여 현재 사용 가능한 각 노드 유형에 대한 단일 레코드를 포함합니다.node_timeline
: 컴퓨팅의 사용률 메트릭에 대한 분별 레코드를 포함합니다.
클러스터 테이블 스키마
클러스터 테이블은 다목적 및 작업 컴퓨팅에 대한 시간 경과에 따른 컴퓨팅 구성의 전체 기록을 포함하는 느린 변경 차원 테이블입니다.
테이블 경로: 이 시스템 테이블은 에 있습니다. system.compute.clusters
열 이름 | 데이터 형식 | 설명 | 예시 |
---|---|---|---|
account_id |
string | 이 클러스터가 만들어진 계정의 ID입니다. | 23e22ba4-87b9- 4cc2-9770-d10b894b7118 |
workspace_id |
string | 이 클러스터가 만들어진 작업 영역의 ID입니다. | 1234567890123456 |
cluster_id |
string | 이 레코드가 연결된 클러스터의 ID입니다. | 0000-123456-crmpt124 |
cluster_name |
string | 클러스터의 사용자 정의 이름입니다. | My cluster |
owned_by |
string | 클러스터 소유자의 사용자 이름입니다. 기본값은 클러스터 작성자이지만 클러스터 API를 통해 변경할 수 있습니다. | sample_user@email.com |
create_time |
timestamp | 이 컴퓨팅 정의 변경의 타임스탬프입니다. | 2023-01-09 11:00:00.000 |
delete_time |
timestamp | 클러스터가 삭제된 시기의 타임스탬프입니다. 값은 null 클러스터가 삭제되지 않은 경우입니다. |
2023-01-09 11:00:00.000 |
driver_node_type |
string | 드라이버 노드 형식 이름입니다. 클라우드 공급자의 인스턴스 형식 이름과 일치합니다. | Standard_D16s_v3 |
worker_node_type |
string | 작업자 노드 형식 이름입니다. 클라우드 공급자의 인스턴스 형식 이름과 일치합니다. | Standard_D16s_v3 |
worker_count |
bigint | 작업자 수입니다. 고정 크기 클러스터에 대해서만 정의됩니다. | 4 |
min_autoscale_workers |
bigint | 설정된 최소 작업자 수입니다. 이 필드는 클러스터 자동 크기 조정에만 유효합니다. | 1 |
max_autoscale_workers |
bigint | 설정된 최대 작업자 수입니다. 이 필드는 클러스터 자동 크기 조정에만 유효합니다. | 1 |
auto_termination_minutes |
bigint | 구성된 자동 수정 기간입니다. | 120 |
enable_elastic_disk |
부울 값 | 자동 크기 조정 디스크 사용 상태. | true |
tags |
map | 클러스터에 대한 사용자 정의 태그(기본 태그는 포함되지 않음). | {"ResourceClass":"SingleNode"} |
cluster_source |
string | 클러스터 UI 의 작성자( , API , JOB 등)를 나타냅니다. |
UI |
init_scripts |
배열 | init 스크립트에 대한 경로 집합입니다. | "/Users/example@email.com /files/scripts/install-python-pacakges.sh" |
aws_attributes |
struct | AWS 관련 설정입니다. | null |
azure_attributes |
struct | Azure 특정 설정. | { "first_on_demand": "0", "availability": "ON_DEMAND_AZURE", "spot_bid_max_price": "—1" } |
gcp_attributes |
struct | GCP 특정 설정입니다. 이 필드는 비어 있습니다. | null |
driver_instance_pool_id |
string | 드라이버가 인스턴스 풀 위에 구성된 경우 인스턴스 풀 ID입니다. | 1107-555555-crhod16-pool-DIdnjazB |
worker_instance_pool_id |
string | 작업자가 인스턴스 풀 위에 구성된 경우 인스턴스 풀 ID입니다. | 1107-555555-crhod16-pool-DIdnjazB |
dbr_version |
string | 클러스터의 Databricks 런타임입니다. | 14.x-snapshot-scala2.12 |
change_time |
timestamp | 컴퓨팅 정의에 대한 변경 타임스탬프입니다. | 2023-01-09 11:00:00.000 |
change_date |
date | 날짜를 변경합니다. 보존에 사용됩니다. | 2023-01-09 |
노드 형식 테이블 스키마
노드 유형 테이블은 기본 하드웨어 정보를 사용하여 현재 사용 가능한 노드 형식을 캡처합니다.
테이블 경로: 이 시스템 테이블은 .에 있습니다 system.compute.node_types
.
열 이름 | 데이터 형식 | 설명 | 예시 |
---|---|---|---|
account_id |
string | 이 클러스터가 만들어진 계정의 ID입니다. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
node_type |
string | 노드 형식에 대한 고유 식별자입니다. | Standard_D16s_v3 |
core_count |
double | 인스턴스의 vCPU 수입니다. | 48.0 |
memory_mb |
long | 인스턴스의 총 메모리입니다. | 393216 |
gpu_count |
long | 인스턴스의 GPU 수입니다. | 0 |
노드 타임라인 테이블 스키마
노드 타임라인 테이블은 분 단위로 노드 수준 리소스 사용률 데이터를 캡처합니다. 각 레코드에는 인스턴스당 지정된 시간 동안의 데이터가 포함됩니다.
테이블 경로: 이 시스템 테이블은 .에 있습니다 system.compute.node_timeline
.
열 이름 | 데이터 형식 | 설명 | 예시 |
---|---|---|---|
account_id |
string | 이 컴퓨팅 리소스가 실행 중인 계정의 ID입니다. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
string | 이 컴퓨팅 리소스가 실행 중인 작업 영역의 ID입니다. | 1234567890123456 |
cluster_id |
string | 컴퓨팅 리소스의 ID입니다. | 0000-123456-crmpt124 |
instance_id |
string | 특정 인스턴스의 ID입니다. | i-1234a6c12a2681234 |
start_time |
timestamp | 레코드의 시작 시간(UTC)입니다. | 2024-07-16T12:00:00Z |
end_time |
timestamp | 레코드의 종료 시간(UTC)입니다. | 2024-07-16T13:00:00Z |
driver |
부울 값 | 인스턴스가 드라이버 또는 작업자 노드인지 여부입니다. | true |
cpu_user_percent |
double | 사용자 랜드에서 CPU가 소요된 시간의 백분율입니다. | 34.76163817234407 |
cpu_system_percent |
double | CPU가 커널에 소요된 시간의 백분율입니다. | 1.0895310279488264 |
cpu_wait_percent |
double | CPU가 I/O를 기다리는 데 소요된 시간의 백분율입니다. | 0.03445157400629276 |
mem_used_percent |
double | 해당 기간 동안 사용된 컴퓨팅 메모리의 백분율입니다(컴퓨팅에서 실행되는 백그라운드 프로세스에서 사용하는 메모리 포함). | 45.34858216779041 |
mem_swap_percent |
double | 메모리 교환에 기인하는 메모리 사용량의 백분율입니다. | 0.014648443087939 |
network_sent_bytes |
bigint | 네트워크 트래픽에서 전송된 바이트 수입니다. | 517376 |
network_received_bytes |
bigint | 네트워크 트래픽에서 수신된 바이트 수입니다. | 179234 |
disk_free_bytes_per_mount_point |
map | 탑재 지점별로 그룹화된 디스크 사용률입니다. 이는 컴퓨팅이 실행되는 동안에만 프로비전되는 임시 스토리지입니다. | {"/var/lib/lxc":123455551234,"/": 123456789123,"/local_disk0":123412341234} |
node_type |
string | 노드 형식의 이름입니다. 클라우드 공급자의 인스턴스 형식 이름과 일치합니다. | Standard_D16s_v3 |
알려진 제한 사항
- 2023년 10월 23일 이전에 삭제된 것으로 표시된 컴퓨팅 리소스는 클러스터 테이블에 표시되지 않습니다. 이로 인해 테이블의 조인이 클러스터 테이블의
system.billing.usage
레코드와 일치하지 않을 수 있습니다. 모든 활성 컴퓨팅 리소스가 백필되었습니다. - 이러한 테이블에는 다목적 및 작업 컴퓨팅에 대한 레코드만 포함됩니다. 서버리스 컴퓨팅, Delta Live Tables 컴퓨팅 또는 SQL 웨어하우스에 대한 레코드는 포함되지 않습니다.
- 10분 미만 동안 실행된 노드는 테이블에 표시되지
node_timeline
않을 수 있습니다.
샘플 쿼리
다음 샘플 쿼리를 사용하여 일반적인 질문에 대답할 수 있습니다.
참고 항목
이러한 예제 중 일부는 클러스터 테이블을 테이블과 조인합니다 system.billing.usage
. 청구 레코드는 지역 간 레코드이고 클러스터 레코드는 지역-sepcific이므로 청구 레코드는 쿼리하는 지역의 클러스터 레코드와만 일치합니다. 다른 지역의 레코드를 보려면 해당 지역에서 쿼리를 실행하세요.
가장 최근 청구 레코드를 사용하여 클러스터 레코드 조인
이 쿼리는 시간 경과에 따른 지출을 이해하는 데 도움이 될 수 있습니다. 최신 청구 기간으로 업데이트 usage_start_time
한 후에는 청구 레코드에 대한 최신 업데이트를 받아 클러스터 데이터에 조인합니다.
각 레코드는 해당 특정 실행 중에 클러스터 소유자와 연결됩니다. 따라서 클러스터 소유자가 변경되면 클러스터가 사용된 시기에 따라 비용이 올바른 소유자에게 롤업됩니다.
SELECT
u.record_id,
c.cluster_id,
c.owned_by,
c.change_time,
u.usage_start_time,
u.usage_quantity
FROM
system.billing.usage u
JOIN system.compute.clusters c
JOIN (SELECT u.record_id, c.cluster_id, max(c.change_time) change_time
FROM system.billing.usage u
JOIN system.compute.clusters c
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2023-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and date_trunc('HOUR', c.change_time) <= date_trunc('HOUR', u.usage_start_time)
GROUP BY all) config
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2023-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and u.record_id = config.record_id
and c.cluster_id = config.cluster_id
and c.change_time = config.change_time
ORDER BY cluster_id, usage_start_time desc;
클러스터 소유자에 대한 특성 비용
컴퓨팅 비용을 줄이려는 경우 이 쿼리를 사용하여 계정에서 가장 많은 DTU를 사용하는 클러스터 소유자를 확인할 수 있습니다.
SELECT
u.record_id record_id,
c.cluster_id cluster_id,
max_by(c.owned_by, c.change_time) owned_by,
max(c.change_time) change_time,
any_value(u.usage_start_time) usage_start_time,
any_value(u.usage_quantity) usage_quantity
FROM
system.billing.usage u
JOIN system.compute.clusters c
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2023-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and c.change_time <= u.usage_start_time
GROUP BY 1, 2
ORDER BY cluster_id, usage_start_time desc;
평균 사용률이 가장 높고 사용률이 가장 높은 컴퓨팅 리소스 식별
평균 CPU 사용률이 가장 높고 최고 CPU 사용률이 가장 높은 다목적 및 작업 컴퓨팅을 식별합니다.
SELECT
distinct cluster_id,
driver,
avg(cpu_user_percent + cpu_system_percent) as `Avg CPU Utilization`,
max(cpu_user_percent + cpu_system_percent) as `Peak CPU Utilization`,
avg(cpu_wait_percent) as `Avg CPU Wait`,
max(cpu_wait_percent) as `Max CPU Wait`,
avg(mem_used_percent) as `Avg Memory Utilization`,
max(mem_used_percent) as `Max Memory Utilization`,
avg(network_received_bytes)/(1024^2) as `Avg Network MB Received per Minute`,
avg(network_sent_bytes)/(1024^2) as `Avg Network MB Sent per Minute`
FROM
node_timeline
WHERE
start_time >= date_add(now(), -1)
GROUP BY
cluster_id,
driver
ORDER BY
3 desc;