Aracılığıyla paylaş


DLT işlem hatlarını izleme

Bu makalede, DLT işlem hatları için yerleşik izleme ve gözlemlenebilirlik özelliklerinin kullanımı açıklanmaktadır. Bu özellikler aşağıdakiler gibi görevleri destekler:

Sorgu performansını incelemek ve tanılamak için bkz. DLT işlem hatları için sorgu geçmişine erişme. Bu özellik Genel Önizleme aşamasındadır.

İşlem hattı olayları için e-posta bildirimleri ekleme

Aşağıdaki durumlarda bildirim almak için bir veya daha fazla e-posta adresi yapılandırabilirsiniz:

  • İşlem hattı güncellemesi başarıyla tamamlanır.
  • İşlem hattı güncellemesi, yeniden denenebilir veya yeniden denenemez bir hatayla başarısız olur. Tüm işlem hattı hataları için bir bildirim almak için bu seçeneği belirleyin.
  • İşlem hattı güncelleştirmesi yeniden denenemeyen (önemli) bir hatayla başarısız oluyor. Yalnızca yeniden denenemeyen bir hata oluştuğunda bildirim almak için bu seçeneği belirleyin.
  • Tek bir veri akışı başarısız olur.

Bir işlem hattı oluşturduğunuzda veya düzenlediğinizde e-posta bildirimlerini yapılandırmak için:

  1. Bildirim ekle'ye tıklayın .
  2. Bildirim almak için bir veya daha fazla e-posta adresi girin.
  3. Yapılandırılan e-posta adreslerine gönderilecek her bildirim türünün onay kutusuna tıklayın.
  4. Bildirimekle'ye tıklayın.

Kullanıcı arabiriminde hangi işlem hattı ayrıntıları kullanılabilir?

İşlem hattı grafiği, işlem hattında bir güncelleme başarıyla başlatıldığında görünür. Oklar, işlem hattınızdaki veri kümeleri arasındaki bağımlılıkları temsil eder. Varsayılan olarak, işlem hattı ayrıntıları sayfası tablonun en son güncelleştirmesini gösterir, ancak açılan menüden eski güncelleştirmeleri seçebilirsiniz.

Ayrıntılar arasında işlem hattı kimliği, kaynak kodu, işlem maliyeti, ürün sürümü ve işlem hattı için yapılandırılmış kanal yer alır.

Veri kümelerinin tablosal görünümünü görmek için Liste sekmesine tıklayın. Listesi görünümü, işlem hattınızdaki tüm veri kümelerini bir tabloda satır olarak temsil etmenizi sağlar ve işlem hattı DAG'niz Graph görünümünde görselleştiremeyecek kadar büyük olduğunda kullanışlıdır. Veri kümesi adı, türü ve durumu gibi birden çok filtre kullanarak tabloda görüntülenen veri kümelerini denetleyebilirsiniz. DAG görselleştirmesine geri dönmek için Graph öğesine tıklayın.

Farklı çalıştır kullanıcısı işlem hattı sahibidir ve işlem hattı güncelleştirmeleri bu kullanıcı izinleriyle çalıştırılır. run as kullanıcıyı değiştirmek için İzinler'e tıklayın ve pipeline sahibini değiştirin.

Veri kümesi ayrıntılarını nasıl görüntüleyebilirsiniz?

İşlem hattı grafiğinde veya veri kümesi listesinde bir veri kümesine tıklanması, veri kümesiyle ilgili ayrıntıları gösterir. Ayrıntılar veri kümesi şemasını, veri kalitesi ölçümlerini ve veri kümesini tanımlayan kaynak kodun bağlantısını içerir.

güncelleştirme geçmişini görüntüleme

İşlem hattı güncelleştirmelerinin geçmişini ve durumunu görüntülemek için üst çubuktaki güncelleştirme geçmişi açılan menüsüne tıklayın.

Bir güncelleştirmenin grafiğini, ayrıntılarını ve olaylarını görüntülemek için açılan menüden güncelleştirmeyi seçin. En son güncelleştirmeye dönmek için En son güncelleştirmegöster'e tıklayın.

Akış ölçümlerini görüntüleme

Önemli

DLT için akış gözlemlenebilirliği Genel Önizlemeiçindedir.

DLT işlem hattınızdaki her akış akışı için Spark Yapılandırılmış Akış tarafından desteklenen Apache Kafka, Amazon Kinesis, Otomatik Yükleyici ve Delta tabloları gibi veri kaynaklarından akış ölçümlerini görüntüleyebilirsiniz. Ölçümler DLT kullanıcı arabiriminin sağ bölmesinde grafik olarak görüntülenir ve kapsam saniyelerini, kapsam baytlarını, kapsam kayıtlarını ve kapsam dosyalarını içerir. Grafikler dakika cinsinden toplanan en yüksek değeri görüntüler ve grafiğin üzerine geldiğinizde bir araç ipucu maksimum değerleri gösterir. Veriler geçerli saatten itibaren son 48 saatle sınırlıdır.

İşlem hattınızdaki akış ölçümlerini içeren tablolar, kullanıcı arabirimi Graph görünümünde işlem hattı DAG'sini görüntülerken DLT Grafik Simgesi simgesini görüntüler. Akış ölçümlerini görüntülemek için DLT Grafik Simgesi tıklayarak akış ölçüm grafiğini sağ bölmedeki Akışlar sekmesinde görüntüleyin. Liste'ne ve ardından akış ölçümleri var'a tıklayarak yalnızca akış ölçümlerine sahip tabloları görüntülemek için filtre uygulayabilirsiniz.

Her akış kaynağı yalnızca belirli ölçümleri destekler. Akış kaynağı tarafından desteklenmeyen ölçümler kullanıcı arabiriminde görüntüleyemez. Aşağıdaki tabloda desteklenen akış kaynakları için kullanılabilecek ölçümler gösterilmektedir:

kaynak bekleyen baytlar iş yükü kayıtları birikim saniyeleri birikmiş dosyalar
Kafka
Kinesis
Delta
Otomatik Yükleyici
Google Pub/Sub

DLT olay günlüğü nedir?

DLT olay günlüğü, denetim günlükleri, veri kalitesi denetimleri, işlem hattı ilerleme durumu ve veri kökeni gibi işlem hattıyla ilgili tüm bilgileri içerir. Veri işlem hatlarınızın durumunu izlemek, anlamak ve izlemek için olay günlüğünü kullanabilirsiniz.

Olay günlüğü girdilerini DLT kullanıcı arabiriminde, DLT API'sindeveya doğrudan olay günlüğünü sorgulayarak görüntüleyebilirsiniz. Bu bölüm, olay günlüğünü doğrudan sorgulamaya odaklanır.

Olaylar günlüğe kaydedilirken, örneğin uyarılar göndermek gibi, özel eylemler çalıştıracak olay kancalarıtanımlayabilirsiniz.

Önemli

Olay günlüğünü, olay günlüğünün yayımlandığı üst kataloğu veya şemayı silmeyin. Olay günlüğünü silmek, işlem hattınızın gelecekteki çalıştırmalar sırasında güncelleştirilememesine neden olabilir.

Olay günlüğü şeması

Aşağıdaki tabloda olay günlüğü şeması açıklanmaktadır. Bu alanlardan bazıları, details alanı gibi bazı sorguları gerçekleştirmek için ayrıştırma gerektiren JSON verileri içerir. Azure Databricks, JSON alanlarını ayrıştırmak için : işlecini destekler. bkz. : (iki nokta işareti) işleci.

Alan Açıklama
id Olay günlüğü kaydı için benzersiz bir tanımlayıcı.
sequence Olayları tanımlamak ve sıralamak için meta verileri içeren bir JSON belgesi.
origin Olayın kaynağıyla ilgili meta verileri içeren bir JSON belgesi( örneğin, bulut sağlayıcısı, bulut sağlayıcısı bölgesi, user_id, pipeline_idveya pipeline_type işlem hattının nerede oluşturulduğunu göstermek için DBSQL veya WORKSPACE).
timestamp Olayın kaydedilildiği saat.
message Olayı açıklayan, insan tarafından okunabilen bir ileti.
level Olay türü, örneğin, INFO, WARN, ERRORveya METRICS.
maturity_level Olay şemasının kararlılığı. Olası değerler şunlardır:
  • STABLE: Şema kararlıdır ve değişmez.
  • NULL: Şema kararlıdır ve değişmez. Kayıt maturity_level alanı eklenmeden önce oluşturulduysa (sürüm 2022.37) değeri NULL olabilir.
  • EVOLVING: Şema kararlı değildir ve değişebilir.
  • DEPRECATED: Şema kullanım dışı bırakıldı ve DLT çalışma zamanı bu olayı üretmeyi istediği zaman durdurabilir.
error Bir hata oluştuysa, hatayı açıklayan ayrıntılar.
details Olayın yapılandırılmış ayrıntılarını içeren bir JSON belgesi. Bu, olayları çözümlemek için kullanılan birincil alandır.
event_type Olay türü.

Olay günlüğünü sorgulama

Not

Bu bölümde Unity Kataloğu ve varsayılan yayımlama modu ile yapılandırılmış işlem hatları için olay günlükleriyle çalışmaya yönelik varsayılan davranış ve söz dizimi açıklanmaktadır.

Varsayılan olarak, DLT olay günlüğünü işlem hattı için yapılandırılan varsayılan katalogda ve şemada gizli bir Delta tablosuna yazar. Gizliyken, tablo yine de tüm yeterince ayrıcalıklı kullanıcılar tarafından sorgulanabilir. Varsayılan olarak, olay günlüğü tablosunu yalnızca işlem hattının sahibi sorgulayabilir.

Varsayılan olarak, gizli olay günlüğünün adı event_log_{pipeline_id}olarak biçimlendirilir; burada işlem hattı kimliği, sistem tarafından atanan ve tirelerin alt çizgilerle değiştirildiği UUID'dir.

Olay günlüğünü yayımlamak için JSON yapılandırmasıyla etkileşim kurabilirsiniz. Bir olay günlüğü yayımladığınızda, olay günlüğünün adını belirtirsiniz ve isteğe bağlı olarak aşağıdaki örnekte olduğu gibi bir katalog ve şema belirtebilirsiniz:

{
  "id": "ec2a0ff4-d2a5-4c8c-bf1d-d9f12f10e749",
  "name": "billing_pipeline",
  "event_log": {
    "catalog": "catalog_name",
    "schema": "schema_name",
    "name": "event_log_table_name"
  }
}

Olay günlüğü konumu, işlem hattındaki tüm Otomatik Yükleyici sorguları için şema konumu olarak da hizmet eder. Databricks, ayrıcalıkları değiştirmeden önce olay günlüğü tablosu üzerinde bir görünüm oluşturmanızı önerir. Bazı işlem ayarları, olay günlüğü tablosu doğrudan paylaşılırsa kullanıcıların şema meta verilerine erişmesine izin verebilir. Aşağıdaki örnek söz dizimi, olay günlüğü tablosunda bir görünüm oluşturur ve bu makalede yer alan örnek olay günlüğü sorgularında kullanılır.

CREATE VIEW event_log_raw
AS SELECT * FROM catalog_name.schema_name.event_log_table_name;

İşlem hattı çalışması her örneğine güncelleştirmedenir. Genellikle en son güncelleştirmeye ilişkin bilgileri ayıklamak istersiniz. En son güncelleştirmenin tanımlayıcısını bulmak ve geçici latest_update görünüme kaydetmek için aşağıdaki sorguyu çalıştırın. Bu görünüm, bu makalede yer alan örnek olay günlüğü sorgularında kullanılır:

CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;

Unity Kataloğu'nda görünümler akış sorgularını destekler. Aşağıdaki örnek, bir olay günlüğü tablosunun üzerinde tanımlanan bir görünümü sorgulamak için Yapılandırılmış Akış'ı kullanır:

df = spark.readStream.table("event_log_raw")

İşlem hattının sahibi, işlem hattı yapılandırmasının Gelişmiş bölümündeki Publish event log to metastore seçeneğini değiştirerek olay günlüğünü genel Delta tablosu olarak yayımlayabilir. İsteğe bağlı olarak olay günlüğü için yeni bir tablo adı, katalog ve şema belirtebilirsiniz.

Olay günlüğü üzerinden sorgu köken bilgilerini alın

Köken hakkında bilgi içeren olaylar flow_definitionolay türüne sahiptir. details:flow_definition nesnesi output_dataset içerir ve input_datasets grafikteki her ilişkiyi tanımlar.

Köken bilgilerini görmek üzere giriş ve çıkış veri kümelerini ayıklamak için aşağıdaki sorguyu kullanabilirsiniz:

SELECT
  details:flow_definition.output_dataset as output_dataset,
  details:flow_definition.input_datasets as input_dataset
FROM
  event_log_raw,
  latest_update
WHERE
  event_type = 'flow_definition'
  AND
  origin.update_id = latest_update.id
output_dataset input_datasets
customers null
sales_orders_raw null
sales_orders_cleaned ["customers", "sales_orders_raw"]
sales_order_in_la ["sales_orders_cleaned"]

Olay günlüğünden veri kalitesini sorgulama

İşlem hattınızdaki veri kümeleriyle ilgili beklentileri tanımlarsanız, veri kalitesi ölçümleri details:flow_progress.data_quality.expectations nesnesinde depolanır. Veri kalitesi hakkında bilgi içeren olaylar flow_progressolay türüne sahiptir. Aşağıdaki örnek, son işlem hattı güncelleştirmesi için veri kalitesi ölçümlerini sorgular:

SELECT
  row_expectations.dataset as dataset,
  row_expectations.name as expectation,
  SUM(row_expectations.passed_records) as passing_records,
  SUM(row_expectations.failed_records) as failing_records
FROM
  (
    SELECT
      explode(
        from_json(
          details :flow_progress :data_quality :expectations,
          "array<struct<name: string, dataset: string, passed_records: int, failed_records: int>>"
        )
      ) row_expectations
    FROM
      event_log_raw,
      latest_update
    WHERE
      event_type = 'flow_progress'
      AND origin.update_id = latest_update.id
  )
GROUP BY
  row_expectations.dataset,
  row_expectations.name
dataset expectation passing_records failing_records
sales_orders_cleaned valid_order_number 4083 0

Olay günlüğünden Otomatik Yükleyici olaylarını sorgulayın

DLT, Otomatik Yükleyici dosyaları işlediğinde olaylar oluşturur. Otomatik Yükleyici olayları için event_typeoperation_progress ve details:operation_progress:typeAUTO_LOADER_LISTING veya AUTO_LOADER_BACKFILL. details:operation_progress nesnesi status, duration_ms, auto_loader_details:source_pathve auto_loader_details:num_files_listed alanlarını da içerir.

Aşağıdaki örnek, en son güncelleştirme için Otomatik Yükleyici olaylarını sorgular:

SELECT
  timestamp,
  details:operation_progress.status,
  details:operation_progress.type,
  details:operation_progress:auto_loader_details
FROM
  event_log_raw,
  latest_update
WHERE
  event_type like 'operation_progress'
  AND
  origin.update_id = latest.update_id
  AND
  details:operation_progress.type in ('AUTO_LOADER_LISTING', 'AUTO_LOADER_BACKFILL')

Olay günlüğünü sorgulayarak veri birikimini izleyin

DLT, details:flow_progress.metrics.backlog_bytes nesnesindeki birikmiş veri miktarını izler. Geribildirim ölçümlerini içeren olaylar, olay türü flow_progressolanlardır. Aşağıdaki örnek, son işlem hattı güncelleştirmesi için kapsam ölçümlerini sorgular:

SELECT
  timestamp,
  Double(details :flow_progress.metrics.backlog_bytes) as backlog
FROM
  event_log_raw,
  latest_update
WHERE
  event_type ='flow_progress'
  AND
  origin.update_id = latest_update.id

Not

gerçekleşmemiş işler ölçümleri, işlem hattının veri kaynağı türüne ve Databricks Çalışma Zamanı sürümüne bağlı olarak kullanılamayabilir.

Sunucusuz özelliği etkinleştirilmemiş iş hatları için olay günlüğünden geliştirilmiş otomatik ölçeklendirme etkinliklerini izleme

Sunucusuz işlem kullanmayan DLT işlem hatları için, işlem hatlarınızda gelişmiş otomatik ölçeklendirme etkinleştirildiğinde olay günlüğü kümeyi yeniden boyutlandırıyor. Gelişmiş otomatik ölçeklendirme hakkında bilgi içeren olayların olay türü autoscale. Küme yeniden boyutlandırma isteği bilgileri details:autoscale nesnesinde depolanır. Aşağıdaki örnek, son işlem hattı güncelleştirmesi için gelişmiş otomatik ölçeklendirme kümesi yeniden boyutlandırma isteklerini sorgular:

SELECT
  timestamp,
  Double(
    case
      when details :autoscale.status = 'RESIZING' then details :autoscale.requested_num_executors
      else null
    end
  ) as starting_num_executors,
  Double(
    case
      when details :autoscale.status = 'SUCCEEDED' then details :autoscale.requested_num_executors
      else null
    end
  ) as succeeded_num_executors,
  Double(
    case
      when details :autoscale.status = 'PARTIALLY_SUCCEEDED' then details :autoscale.requested_num_executors
      else null
    end
  ) as partially_succeeded_num_executors,
  Double(
    case
      when details :autoscale.status = 'FAILED' then details :autoscale.requested_num_executors
      else null
    end
  ) as failed_num_executors
FROM
  event_log_raw,
  latest_update
WHERE
  event_type = 'autoscale'
  AND
  origin.update_id = latest_update.id

İşlem kaynağı kullanımını izleme

cluster_resources olayları kümedeki görev yuvası sayısı, bu görev yuvalarının ne kadarının kullanıldığı ve zamanlamayı bekleyen görev sayısıyla ilgili ölçümler sağlar.

İyileştirilmiş otomatik ölçeklendirme etkinleştirildiğinde, cluster_resources olayları latest_requested_num_executorsve optimal_num_executorsdahil olmak üzere otomatik ölçeklendirme algoritması için ölçümler de içerir. Olaylar ayrıca algoritmanın durumunu CLUSTER_AT_DESIRED_SIZE, SCALE_UP_IN_PROGRESS_WAITING_FOR_EXECUTORSve BLOCKED_FROM_SCALING_DOWN_BY_CONFIGURATIONgibi farklı durumlar olarak gösterir. Bu bilgiler, gelişmiş otomatik ölçeklendirmenin genel bir resmini sağlamak için otomatik ölçeklendirme olaylarıyla birlikte görüntülenebilir.

Aşağıdaki örnek, son işlem hattı güncelleştirmesi için görev kuyruğu boyut geçmişini sorgular:

SELECT
  timestamp,
  Double(details :cluster_resources.avg_num_queued_tasks) as queue_size
FROM
  event_log_raw,
  latest_update
WHERE
  event_type = 'cluster_resources'
  AND
  origin.update_id = latest_update.id

Aşağıdaki örnek, son işlem hattı güncelleştirmesinin kullanım geçmişini sorgular:

SELECT
  timestamp,
  Double(details :cluster_resources.avg_task_slot_utilization) as utilization
FROM
  event_log_raw,
  latest_update
WHERE
  event_type = 'cluster_resources'
  AND
  origin.update_id = latest_update.id

Aşağıdaki örnek, yalnızca en son istekte algoritma tarafından istenen yürütücü sayısı, algoritma tarafından en son ölçümlere göre önerilen en uygun yürütücü sayısı ve otomatik ölçeklendirme algoritması durumu gibi gelişmiş otomatik ölçeklendirme işlem hatlarında kullanılabilen ölçümlerle birlikte yürütücü sayısı geçmişini sorgular:

SELECT
  timestamp,
  Double(details :cluster_resources.num_executors) as current_executors,
  Double(details :cluster_resources.latest_requested_num_executors) as latest_requested_num_executors,
  Double(details :cluster_resources.optimal_num_executors) as optimal_num_executors,
  details :cluster_resources.state as autoscaling_state
FROM
  event_log_raw,
  latest_update
WHERE
  event_type = 'cluster_resources'
  AND
  origin.update_id = latest_update.id

DLT işlem hatlarını denetleme

DLT'de verilerin nasıl güncelleştirilmekte olduğunu tam olarak görmek için DLT olay günlüğü kayıtlarını ve diğer Azure Databricks denetim günlüklerini kullanabilirsiniz.

DLT, güncelleştirmeleri çalıştırmak için işlem hattı sahibinin kimlik bilgilerini kullanır. İşlem hattı sahibini güncelleştirerek kullanılan kimlik bilgilerini değiştirebilirsiniz. DLT işlem hattı oluşturma, yapılandırma düzenlemeleri ve güncelleştirmeleri tetikleme gibi işlem hattındaki eylemler için kullanıcıyı kaydeder.

Unity Kataloğu denetim olayları için bir referans olarak Unity Kataloğu olaylarını görün.

Olay günlüğünde kullanıcı eylemlerini sorgulama

Olay günlüğünü kullanarak olayları, örneğin kullanıcı eylemlerini denetleyebilirsiniz. Kullanıcı eylemleri hakkında bilgi içeren olaylar user_actionolay türüne sahiptir.

Eylem hakkındaki bilgiler details alanındaki user_action nesnesinde depolanır. Kullanıcı olaylarının denetim günlüğünü oluşturmak için aşağıdaki sorguyu kullanın. Bu sorguda kullanılan event_log_raw görünümünü oluşturmak için bkz: Olay günlüğünüsorgulama.

SELECT timestamp, details:user_action:action, details:user_action:user_name FROM event_log_raw WHERE event_type = 'user_action'
timestamp action user_name
2021-05-20T19:36:03.517+0000 START user@company.com
2021-05-20T19:35:59.913+0000 CREATE user@company.com
2021-05-27T00:35:51.971+0000 START user@company.com

Çalışma zamanı bilgileri

İşlem hattı güncelleştirmesi için çalışma zamanı bilgilerini, örneğin güncelleştirmenin Databricks Runtime sürümünü görüntüleyebilirsiniz:

SELECT details:create_update:runtime_version:dbr_version FROM event_log_raw WHERE event_type = 'create_update'
dbr_version
11.0