Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure Data Lake Storage egy nagy mértékben skálázható és költséghatékony data lake-megoldás a big data-elemzésekhez. Egyesíti a nagy teljesítményű fájlrendszer erejét a hatalmas kapacitással és költséghatékony működéssel, így segít gyorsabban következtetésekhez jutni. A Data Lake Storage Gen2 kiterjeszti az Azure Blob Storage képességeit, és elemzési számítási feladatokhoz van optimalizálva.
Az Azure Data Explorer integrálható az Azure Blob Storage és az Azure Data Lake Storage (Gen1 és Gen2) szolgáltatással, amely gyors, gyorsítótárazott és indexelt hozzáférést biztosít a külső tárolóban tárolt adatokhoz. Az Adatok elemzése és lekérdezése az Azure Data Explorerbe való előzetes betöltés nélkül is lehetséges. Egyszerre lekérdezheti a megemésztett és a nem megemésztett külső adatokat is. További információkért tekintse meg, hogyan hozhat létre külső táblát az Azure Data Explorer webes felhasználói felület varázslójának használatával. Rövid áttekintésért tekintse meg a külső táblákat.
Jótanács
A legjobb lekérdezési teljesítmény megköveteli az adatbetöltést az Azure Data Explorerben. A külső adatok előzetes betöltés nélküli lekérdezésének képessége csak előzményadatokhoz vagy ritkán lekérdezett adatokhoz használható. Optimalizálja a külső adat lekérdezési teljesítményét a legjobb eredmények érdekében.
Külső tábla létrehozása
Tegyük fel, hogy sok olyan CSV-fájllal rendelkezik, amely a raktárban tárolt termékek előzményinformációját tartalmazza, és gyors elemzést szeretne végezni a tavalyi év öt legnépszerűbb termékének megkereséséhez. Ebben a példában a CSV-fájlok a következőképpen néznek ki:
Időbélyeg | Termékazonosító | Termékleírás |
---|---|---|
2019-01-01 11:21:00 | TO6050 | 3,5in DS/HD hajlékonylemez |
2019-01-01 11:30:55 | YDX1 | Yamaha DX1 szintetizátor |
... | ... | ... |
A fájlok az Azure Blob Storage-ban mycompanystorage
, egy dátum szerint particionált tárolóban archivedproducts
vannak tárolva:
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
...
Ha kQL-lekérdezést szeretne közvetlenül futtatni ezeken a CSV-fájlokon, a .create external table
paranccsal definiáljon egy külső táblát az Azure Data Explorerben. A külső tábla létrehozási parancsbeállításaival kapcsolatos további információkért tekintse meg a külső táblaparancsokat.
.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'
)
A külső tábla most már látható az Azure Data Explorer webes felhasználói felületének bal oldali ablaktábláján:
Külső táblaengedélyek
Tekintse át a következő táblaengedélyeket:
- Az adatbázis-felhasználó létrehozhat egy külső táblát. A tábla létrehozója automatikusan a tábla rendszergazdájává válik.
- A fürt-, adatbázis- vagy táblaadminisztrátor szerkesztheti a meglévő táblákat.
- Bármely adatbázis-felhasználó vagy -olvasó lekérdezhet egy külső táblát.
Külső tábla lekérdezése
Miután definiált egy külső táblát, a external_table()
függvény használatával hivatkozhat rá. A lekérdezés többi része a szokásos Kusto lekérdezési nyelv.
external_table("ArchivedProducts")
| where Timestamp > ago(365d)
| summarize Count=count() by ProductId,
| top 5 by Count
Külső és betöltött adatok együttes lekérdezése
A külső táblákat és a betöltött adattáblákat is lekérdezheti ugyanazon a lekérdezésen belül. A külső táblát az Azure Data Explorerből, SQL-kiszolgálókról vagy más forrásokból származó egyéb adatokkal is használhatja join
union
. A let( ) statement
használatával rövidített nevet rendelhet egy külső táblahivatkozáshoz.
Az alábbi példában a Termékek egy betöltött adattábla, az ArchivedProducts pedig egy külső tábla, amelyet definiáltunk:
let T1 = external_table("ArchivedProducts") | where TimeStamp > ago(100d);
let T = Products; //T is an internal table
T1 | join T on ProductId | take 10
Hierarchikus adatformátumok lekérdezése
Az Azure Data Explorer lehetővé teszi a hierarchikus formátumok( például JSON
, Parquet
, Avro
és ORC
) lekérdezését. Ha hierarchikus adatsémát szeretne külső táblázatsémára képezni (ha eltér), használjon külső táblaleképezési parancsokat. Ha például jSON-naplófájlokat szeretne lekérdezni a következő formátumban:
{
"timestamp": "2019-01-01 10:00:00.238521",
"data": {
"tenant": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"method": "RefreshTableMetadata"
}
}
{
"timestamp": "2019-01-01 10:00:01.845423",
"data": {
"tenant": "bbbbcccc-1111-dddd-2222-eeee3333ffff",
"method": "GetFileList"
}
}
...
A külső tábladefiníció a következőképpen néz ki:
.create external table ApiCalls(Timestamp: datetime, TenantId: guid, MethodName: string)
kind=blob
dataformat=multijson
(
h@'https://storageaccount.blob.core.windows.net/container1;StorageSecretKey'
)
Olyan JSON-leképezés definiálása, amely az adatmezőket külső tábladefiníciós mezőkhöz rendeli:
.create external table ApiCalls json mapping 'MyMapping' '[{"Column":"Timestamp","Properties":{"Path":"$.timestamp"}},{"Column":"TenantId","Properties":{"Path":"$.data.tenant"}},{"Column":"MethodName","Properties":{"Path":"$.data.method"}}]'
Külső tábla lekérdezésekor létrejön a leképezés, és a külső tábla oszlopaira leképezett releváns adatokat megkapja.
external_table('ApiCalls') | take 10
További információ a leképezési szintaxisról: adatleképezések.
TaxiRides külső tábla lekérdezése a súgó klaszterben
Az Azure Data Explorer különféle funkcióinak kipróbálásához használja a help nevű tesztfürtöt. A súgófürt tartalmaz egy külső tábladefiníciót egy New York-i taxiadatkészlethez , amely több milliárd taxiúttal rendelkezik.
Külső tábla létrehozása TaxiRides
Ez a szakasz a TaxiRides külső tábla létrehozásához használt lekérdezést mutatja be a help fürtben. Mivel már létrehozta ezt a táblát, kihagyhatja ezt a szakaszt, és közvetlenül a TaxiRides külső táblaadatainak lekérdezésére léphet.
.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'
)
A létrehozott TaxiRides-táblát az Azure Data Explorer webes felhasználói felületének bal oldali paneljén találja:
TaxiRides külső táblaadatok lekérdezése
Jelentkezzen be a(z) https://dataexplorer.azure.com/clusters/help/databases/Samplesplatformra.
TaxiRides külső tábla lekérdezése particionálás nélkül
Futtassa ezt a lekérdezést a TaxiRides külső táblán a hét minden napjára vonatkozó túrák megjelenítéséhez a teljes adatkészleten.
external_table("TaxiRides")
| summarize count() by dayofweek(pickup_datetime)
| render columnchart
Ez a lekérdezés a hét legforgalmasábú napját jeleníti meg. Mivel az adatok nincsenek particionálva, a lekérdezés akár több percet is igénybe vehet az eredmények visszaadásához.
TaxiRides külső tábla lekérdezése particionálással
Futtassa ezt a lekérdezést a TaxiRides külső táblán a 2017 januárjában használt taxifülketípusok (sárga vagy zöld) megjelenítéséhez.
external_table("TaxiRides")
| where pickup_datetime between (datetime(2017-01-01) .. datetime(2017-02-01))
| summarize count() by cab_type
| render piechart
Ez a lekérdezés particionálást használ, amely optimalizálja a lekérdezési időt és a teljesítményt. A lekérdezés szűr egy particionált oszlopon (pickup_datetime), és néhány másodpercen belül visszaadja az eredményeket.
Más lekérdezéseket is írhat a TaxiRides külső táblán való futtatáshoz, és további információkat tudhat meg az adatokról.
A lekérdezési teljesítmény optimalizálása
Optimalizálja a lekérdezési teljesítményt a tóban az alábbi ajánlott eljárásokkal a külső adatok lekérdezéséhez.
Adatformátum
- Az elemzési lekérdezésekhez használjon oszlopos formátumot a következő okokból:
- Csak a lekérdezés szempontjából releváns oszlopok olvashatók.
- Az oszlopkódolási technikák jelentősen csökkenthetik az adatméretet.
- Az Azure Data Explorer támogatja a Parquet és az ORC oszlopos formátumokat. A parquet formátum az optimalizált implementáció miatt javasolt.
Azure-régió
Ellenőrizze, hogy a külső adatok ugyanabban az Azure-régióban találhatóak-e, mint az Azure Data Explorer-fürt. Ez a beállítás csökkenti a költségeket és az adatok beolvasási idejét.
Fájlméret
Az optimális fájlméret fájlonként több száz Mb (legfeljebb 1 GB). Kerülje a felesleges többletterhelést igénylő kis méretű fájlokat, például a lassabb fájlbesorzási folyamatot és az oszlopos formátum korlátozott használatát. A fájlok számának nagyobbnak kell lennie, mint az Azure Data Explorer-fürt processzormagjainak száma.
Tömörítés
Tömörítéssel csökkentheti a távoli tárolóból lekért adatok mennyiségét. Parquet formátum esetén használja a belső Parquet-tömörítési mechanizmust, amely külön tömöríti az oszlopcsoportokat, így külön olvashatja őket. A tömörítési mechanizmus használatának ellenőrzéséhez ellenőrizze, hogy a fájlok neve a következő: <fájlnév>.gz.parquet vagy <filename.snappy.parquet>, és nem <fájlnév>.parquet.gz.
Particionálás
Rendszerezze az adatokat "mappa" partíciókkal, amelyek lehetővé teszik a lekérdezés számára, hogy kihagyja az irreleváns elérési utakat. Particionálás tervezésekor fontolja meg a fájlméretet és a lekérdezések gyakori szűrőit, például az időbélyeget vagy a bérlőazonosítót.
Virtuális gép mérete
Válassza ki a több maggal és nagyobb hálózati átviteli sebességgel rendelkező virtuálisgép-termékváltozatokat (a memória kevésbé fontos). További információ: Az Azure Data Explorer-fürt megfelelő VM SKU-jának kiválasztása.