Azure Veri Gezgini kullanarak Azure Data Lake'te verileri sorgulama
Azure Data Lake Depolama, büyük veri analizi için yüksek oranda ölçeklenebilir ve uygun maliyetli bir veri gölü çözümüdür. Bu, içgörü elde etmek için zamanlarınızı azaltmanıza yardımcı olmak için yüksek performanslı bir dosya sisteminin gücünü muazzam ölçek ve ekonomi ile birleştirir. Data Lake Depolama 2. Nesil, Azure Blob Depolama özelliklerini genişletmektedir ve analiz iş yükleri için iyileştirilmiştir.
Azure Veri Gezgini Azure Blob Depolama ve Azure Data Lake Depolama (1. Nesil ve 2. Nesil) ile tümleştirildi ve dış depolama alanında depolanan verilere hızlı, önbelleğe alınmış ve dizinli erişim sağlar. Verileri, veri kaynağına önceden veri alımı olmadan analiz Azure Veri Gezgini. Ayrıca, aynı anda alındı ve alındı olmayan dış veriler arasında sorgu da kullanabilirsiniz.
İpucu
En iyi sorgu performansı, veri veri alımını Azure Veri Gezgini. Dış verileri önceden veri alımı olmadan sorgulama özelliği yalnızca geçmiş veriler veya nadiren sorgulanan veriler için kullanılmalıdır. En iyi sonuçlar için dış veri sorgu performansınızı en iyi duruma getirme.
Dış tablo oluşturma
Bir ambarda depolanan ürünlerle ilgili geçmiş bilgileri içeren çok sayıda CSV dosyanız olduğunu ve geçen yılın en popüler beş ürünlerini bulmak için hızlı bir analiz yapmak istediğinizi düşünün. Bu örnekte CSV dosyaları şöyledir:
| Timestamp | ProductId | ProductDescription |
|---|---|---|
| 2019-01-01 11:21:00 | TO6050 | 3.5 inç DS/HD Disket |
| 2019-01-01 11:30:55 | YDX1 | Trip DX1 Synthesizer |
| ... | ... | ... |
Dosyalar Azure Blob depolama alanında adlı mycompanystorage bir kapsayıcı altında, archivedproducts tarihe göre bölümlenmiş olarak depolanır:
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00000-7e967c99-cf2b-4dbb-8c53-ce388389470d.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00001-ba356fa4-f85f-430a-8b5a-afd64f128ca4.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00002-acb644dc-2fc6-467c-ab80-d1590b23fc31.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00003-cd5fad16-a45e-4f8c-a2d0-5ea5de2f4e02.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/02/part-00000-ffc72d50-ff98-423c-913b-75482ba9ec86.csv.gz
...
Bu CSV dosyalarında doğrudan bir KQL sorgusu çalıştırmak için komutunu kullanarak bu csv dosyalarında .create external table bir dış tablo Azure Veri Gezgini. Dış tablo oluşturma komut seçenekleri hakkında daha fazla bilgi için bkz. dış tablo komutları.
.create external table ArchivedProducts(Timestamp:datetime, ProductId:string, ProductDescription:string)
kind=blob
partition by (Date:datetime = bin(Timestamp, 1d))
dataformat=csv
(
h@'https://mycompanystorage.blob.core.windows.net/archivedproducts;StorageSecretKey'
)
Dış tablo artık Web kullanıcı arabiriminin sol bölmesinde görünür:
Dış tablo izinleri
- Veritabanı kullanıcısı bir dış tablo oluşturabilir. Tablo oluşturucu otomatik olarak tablo yöneticisi olur.
- Küme, veritabanı veya tablo yöneticisi mevcut bir tabloyu düzenleyebilir.
- Herhangi bir veritabanı kullanıcısı veya okuyucusu dış tabloyu sorgular.
Dış tabloyu sorgulama
Dış tablo tanımlandığı zaman external_table() işlev bu tabloya başvurmak için kullanılabilir. Sorgunun geri kalanı standart Kusto Sorgu Dili'dir.
external_table("ArchivedProducts")
| where Timestamp > ago(365d)
| summarize Count=count() by ProductId,
| top 5 by Count
Dış verileri ve verileri birlikte sorgulama
Hem dış tabloları hem de veri tablolarını aynı sorgunun içinde sorguabilirsiniz. joinSunuculardan, union sunuculardan veya diğer kaynaklardan ek Azure Veri Gezgini SQL tabloyu da kullanabilirsiniz. Dış tablo let( ) statement başvurusuna kısa ad atamak için kullanın.
Aşağıdaki örnekte Products, bir veri tablosu, ArchivedProducts ise daha önce tanımlandığımız bir dış tablodur:
let T1 = external_table("ArchivedProducts") | where TimeStamp > ago(100d);
let T = Products; //T is an internal table
T1 | join T on ProductId | take 10
Hiyerarşik veri biçimlerini sorgulama
Azure Veri Gezgini , , ve gibi hiyerarşik biçimlerin sorgusunu JSONParquetAvroORC sağlar. Hiyerarşik veri şemasını bir dış tablo şemasıyla (farklı ise) eşlemek için dış tablo eşleme komutlarını kullanın. Örneğin, JSON günlük dosyalarını aşağıdaki biçimde sorgulamak için:
{
"timestamp": "2019-01-01 10:00:00.238521",
"data": {
"tenant": "e1ef54a6-c6f2-4389-836e-d289b37bcfe0",
"method": "RefreshTableMetadata"
}
}
{
"timestamp": "2019-01-01 10:00:01.845423",
"data": {
"tenant": "9b49d0d7-b3e6-4467-bb35-fa420a25d324",
"method": "GetFileList"
}
}
...
Dış tablo tanımı şu şekildedir:
.create external table ApiCalls(Timestamp: datetime, TenantId: guid, MethodName: string)
kind=blob
dataformat=multijson
(
h@'https://storageaccount.blob.core.windows.net/container1;StorageSecretKey'
)
Veri alanlarını dış tablo tanımı alanlarına eşleten bir JSON eşlemesi tanımlayın:
.create external table ApiCalls json mapping 'MyMapping' '[{"Column":"Timestamp","Properties":{"Path":"$.timestamp"}},{"Column":"TenantId","Properties":{"Path":"$.data.tenant"}},{"Column":"MethodName","Properties":{"Path":"$.data.method"}}]'
Dış tabloyu sorgularsanız eşleme çağrılır ve ilgili veriler dış tablo sütunlarıyla eşlenmiş olur:
external_table('ApiCalls') | take 10
Eşleme söz dizimi hakkında daha fazla bilgi için bkz. veri eşlemeleri.
Yardım kümesinde TaxiRides dış tablosu sorgulama
Farklı test özelliklerini denemek için help adlı test Azure Veri Gezgini kullanın. Yardım kümesi, milyarlarca taksi yolculuğu içeren bir New York City taksi veri kümesi için bir dış tablo tanımı içerir.
TaxiRides dış tablosu oluşturma
Bu bölümde, yardım kümesinde TaxiRides dış tablosu oluşturmak için kullanılan sorguyu gösterir. Bu tablo zaten oluşturulduktan sonra bu bölümü atlayıp doğrudan TaxiRidesdış tablo verilerini sorgulamaya gidebilirsiniz.
.create external table TaxiRides
(
trip_id: long,
vendor_id: string,
pickup_datetime: datetime,
dropoff_datetime: datetime,
store_and_fwd_flag: string,
rate_code_id: int,
pickup_longitude: real,
pickup_latitude: real,
dropoff_longitude: real,
dropoff_latitude: real,
passenger_count: int,
trip_distance: real,
fare_amount: real,
extra: real,
mta_tax: real,
tip_amount: real,
tolls_amount: real,
ehail_fee: real,
improvement_surcharge: real,
total_amount: real,
payment_type: string,
trip_type: int,
pickup: string,
dropoff: string,
cab_type: string,
precipitation: int,
snow_depth: int,
snowfall: int,
max_temperature: int,
min_temperature: int,
average_wind_speed: int,
pickup_nyct2010_gid: int,
pickup_ctlabel: string,
pickup_borocode: int,
pickup_boroname: string,
pickup_ct2010: string,
pickup_boroct2010: string,
pickup_cdeligibil: string,
pickup_ntacode: string,
pickup_ntaname: string,
pickup_puma: string,
dropoff_nyct2010_gid: int,
dropoff_ctlabel: string,
dropoff_borocode: int,
dropoff_boroname: string,
dropoff_ct2010: string,
dropoff_boroct2010: string,
dropoff_cdeligibil: string,
dropoff_ntacode: string,
dropoff_ntaname: string,
dropoff_puma: string
)
kind=blob
partition by (Date:datetime = bin(pickup_datetime, 1d))
dataformat=csv
(
h@'https://storageaccount.blob.core.windows.net/container1;secretKey'
)
Web kullanıcı arabiriminin sol bölmesine bakarak oluşturulan TaxiRides tablosuna bakabilirsiniz:
TaxiRides dış tablo verilerini sorgulama
https://dataexplorer.azure.com/clusters/help/databases/Samples adresinde oturum açın.
Bölümleme olmadan TaxiRides dış tablosu sorgulama
Bu sorguyuTaxiRides dış tablosunda çalıştırarak veri kümesi genelinde haftanın her günü için yolculukları gösterebilirsiniz.
external_table("TaxiRides")
| summarize count() by dayofweek(pickup_datetime)
| render columnchart
Bu sorgu haftanın en yoğun günü gösterir. Veriler bölümlemez, sorgunun sonuçların dönmesi birkaç dakika sürebilir.
Bölümleme ile TaxiRides dış tablosu sorgulama
Ocak 2017'de kullanılan taksi türlerini (sarı veya yeşil) göstermek için TaxiRides dış tablosunda bu sorguyu çalıştırın.
external_table("TaxiRides")
| where pickup_datetime between (datetime(2017-01-01) .. datetime(2017-02-01))
| summarize count() by cab_type
| render piechart
Bu sorguda sorgu süresi ve performansı iyi hale getirmek için bölümleme kullanılır. Sorgu, bölümlenmiş bir sütuna (pickup_datetime) göre filtre oluşturur ve sonuçları birkaç saniye içinde döndürür.
TaxiRides dış tablosunda çalıştırmak için ek sorgular yazabilir ve veriler hakkında daha fazla bilgi öğrenebilirsiniz.
Sorgu performansınızı iyileştirme
Dış verileri sorgulamak için aşağıdaki en iyi yöntemleri kullanarak gölde sorgu performansınızı en iyi duruma getirme.
Veri biçimi
- Analiz sorguları için aşağıdaki nedenlerle sütunlu bir biçim kullanın:
- Yalnızca sorguyla ilgili sütunlar okunabilir.
- Sütun kodlama teknikleri veri boyutunu önemli ölçüde düşürebilirsiniz.
- Azure Veri Gezgini Parquet ve ORC sütunlu biçimlerini destekler. İyileştirilmiş uygulama nedeniyle parquet biçimi önerilir.
Azure bölgesi
Dış verilerin, kaynak kümeniz ile aynı Azure bölgesinde Azure Veri Gezgini olun. Bu kurulum, maliyeti ve veri getirme süresini azaltır.
Dosya boyutu
En uygun dosya boyutu, dosya başına yüzlerce Mb 'tır (en fazla 1 GB). Daha yavaş dosya numaralama işlemi ve sütun biçiminde sınırlı kullanım gibi gereksiz ek yük gerektiren çok sayıda küçük dosyadan kaçının. Dosya sayısı, kümenizin cpu çekirdeği sayısından Azure Veri Gezgini olmalıdır.
Sıkıştırma
Uzak depolamadan alınan veri miktarını azaltmak için sıkıştırmayı kullanın. Parquet biçimi için, sütun gruplarını ayrı ayrı sıkıştırarak bunları ayrı ayrı okumanıza olanak sağlayan iç Parquet sıkıştırma mekanizmasını kullanın. Sıkıştırma mekanizmasının kullanımını doğrulamak için, dosyaların şu şekilde adlandırılıp adlandırılab olmadığını kontrol edin: filename > .gz.parquet veya > değil, <.
Bölümleme
Sorgunun ilgisiz yolları atlamayı sağlayan "klasör" bölümlerini kullanarak verilerinizi düzenleme. Bölümlemeyi planken, sorgular için dosya boyutunu ve zaman damgası veya kiracı kimliği gibi yaygın filtreleri göz önünde bulundurabilirsiniz.
VM boyutu
Daha fazla çekirdek ve daha yüksek ağ aktarım hızına sahip VM SKU'larını seçin (bellek daha az önemlidir). Daha fazla bilgi için bkz. Kümeniz için doğru VM SKU'Azure Veri Gezgini seçin.
Sonraki adımlar
- Azure Data Lake'te verilerinizi sorgulamak için Azure Veri Gezgini. Sorgu yazmayı ve verilerinizden ek içgörüler türetebilirsiniz.