Nejčastější dotazy

Co je rozdílový Lake?

Rozdílový Lake je Open Source vrstva úložiště , která přináší spolehlivost na datové jezera. Delta Lake nabízí transakce ACID a škálovatelné zpracování metadat a sjednocuje streamování a dávkové zpracování dat. Delta Lake funguje nad stávajícím datovým jezerem a je plně kompatibilní s rozhraními Apache Spark API.

Rozdílová Lake na Azure Databricks umožňuje nakonfigurovat rozdílové jezera na základě vašich vzorů úloh a poskytuje optimalizovaná rozložení a indexy pro rychlé interaktivní dotazy.

Rozdílový Lake je umístěný nad Apache Spark. Formát a výpočetní vrstva pomáhají zjednodušit tvorbu kanálů s velkými objemy dat a zvýšit celkovou efektivitu vašich kanálů.

Jaký formát používá Delta Lake k ukládání dat?

Rozdílový Lake pomocí souborů Parquet se správou verzí ukládá vaše data do cloudového úložiště. Kromě verzí rozdílový Lake také ukládá transakční protokol, který uchovává přehled o všech potvrzeních provedených v tabulce nebo v adresáři úložiště objektů BLOB k poskytování transakcí v KYSELINě.

Jak můžu s využitím Delta Lake číst a zapisovat data?

Pomocí oblíbených Apache Spark rozhraní API můžete číst a zapisovat data pomocí rozdílových Lake. Viz čtení tabulky a zápis do tabulky.

Kde Delta Lake ukládá data?

Při zápisu dat můžete určit umístění v cloudovém úložišti. Rozdílový Lake ukládá data v tomto umístění ve formátu Parquet.

Můžu streamovat data přímo do a z tabulek Delta?

Ano, pomocí strukturovaného streamování můžete přímo zapisovat data do rozdílových tabulek a číst z rozdílných tabulek. Viz streamovaná data do rozdílových tabulek a data streamu z rozdílových tabulek.

Podporuje Delta Lake zápisy nebo čtení s využitím rozhraní DStream API streamování Sparku?

Rozdíl nepodporuje rozhraní DStream API. Pro čtení a zápisy do tabulky doporučujeme používat streamování tabulek.

Pokud používám Delta Lake, můžu jednoduše přenést svůj kód na jiné platformy Sparku?

Ano. Pokud používáte rozdílový Lake, používáte rozhraní API Open Apache Spark, abyste mohli svůj kód snadno přenést na jiné platformy Spark. Chcete-li kód přenést, nahraďte delta Format formátem parquet .

Jak si stojí tabulky Delta ve srovnání s tabulkami Hive SerDe?

Rozdílové tabulky jsou spravovány do většího rozsahu. Konkrétně je k dispozici několik parametrů SerDe v podregistru, které vám rozdílový Lake spravuje vaším jménem, takže nikdy nemusíte zadávat ručně:

  • ROWFORMAT
  • SERDE
  • OUTPUTFORMAT ANI INPUTFORMAT
  • COMPRESSION
  • STORED AS

Jaké funkce DDL a DML Delta Lake nepodporuje?

  • Nepodporované funkce DDL:
    • ANALYZE TABLE PARTITION
    • ALTER TABLE [ADD|DROP] PARTITION
    • ALTER TABLE RECOVER PARTITIONS
    • ALTER TABLE SET SERDEPROPERTIES
    • CREATE TABLE LIKE
    • INSERT OVERWRITE DIRECTORY
    • LOAD DATA
  • Nepodporované funkce DML:
    • INSERT INTO [OVERWRITE] tabulka se statickými oddíly
    • INSERT OVERWRITE TABLE pro tabulku s dynamickými oddíly
    • Přerozdělením
    • Určení schématu při čtení z tabulky
    • Určení cílových oddílů pomocí PARTITION (part_spec) v TRUNCATE TABLE

Podporuje Delta Lake transakce s více tabulkami?

Rozdílový Lake nepodporuje transakce s více tabulkami a cizí klíče. Rozdílový Lake podporuje transakce na úrovni tabulky .

Jak můžu změnit typ sloupce?

Změna typu sloupce nebo vyřazení sloupce vyžaduje přepsání tabulky. Příklad naleznete v tématu Změna typu sloupce.

Co to znamená, že rozdílový Lake podporuje zápisy do více clusterů ?

Znamená to, že rozdílový Lake provede uzamykání, aby se zajistilo, že dotazy na zápis do tabulky z více clusterů ve stejnou dobu nebudou poškozeny. Neznamená to však, že pokud dojde ke konfliktu při zápisu (například aktualizovat a odstranit stejnou věc), bude úspěšně úspěšná. Místo toho se jedna z zápisů nezdaří a tato chyba vám upozorní na to, abyste operaci mohli opakovat.

Můžu upravit tabulku Delta z jiného pracovního prostoru?

Ano, můžete současně upravit stejnou rozdílovou tabulku z různých pracovních prostorů. Navíc platí, že pokud jeden proces zapisuje z pracovního prostoru, čtenáři v jiných pracovních prostorech uvidí konzistentní zobrazení.

Můžu k tabulkám Delta přistupovat mimo modul Databricks Runtime?

Zvažte dva případy: externí zápisy a externí čtení.

  • Externí zápisy: rozdílový Lake uchovává další metadata ve formě transakčního protokolu, aby bylo možné povolit KYSELé transakce a izolaci snímků pro čtenáře. Aby bylo zajištěno, že se transakční protokol správně aktualizuje a jsou provedeny správné ověření, musí zápisy projít Databricks Runtime.

  • Externí čtení: rozdílové tabulky ukládají data zakódovaná v otevřeném formátu (Parquet), což umožňuje ostatním nástrojům, které tento formát porozumět, číst data. Ale vzhledem k tomu, že jiné nástroje nepodporují rozdílový protokol transakcí Lake Lake, je pravděpodobný, že budou nesprávně číst zastaralé Odstraněná data, nepotvrzená data nebo částečné výsledky neúspěšných transakcí.

    V případech, kdy jsou data statická (to znamená, že neexistují žádné aktivní úlohy zapisující do tabulky), můžete použít VACUUM s uchováním ZERO HOURS pro vyčištění všech zastaralých souborů Parquet, které nejsou aktuálně součástí tabulky. Tato operace umístí soubory Parquet, které se nacházejí v DBFS, do konzistentního stavu tak, aby je bylo teď možné číst pomocí externích nástrojů.

    Delta Lake ale spoléhá na zastaralé snímky pro následující funkce, které se při použití VACUUM s nulovým limitem uchovávání nezdaří:

    • Izolace snímků pro čtenáře: dlouho běžící úlohy budou pokračovat ve čtení konzistentního snímku od chvíle, kdy byly úlohy spuštěny, a to i v případě, že se tabulka upraví souběžně. Spuštění VACUUM s uchováním kratším než délka těchto úloh může způsobit selhání u FileNotFoundException .
    • Streamování z rozdílových tabulek: streamy načtené z původních souborů zapsaných do tabulky, aby se zajistilo, že se přesně jednou zpracovávají. V kombinaci s OPTIMIZE s VACUUM nulovým uchováváním může tyto soubory odebrat před tím, než má datový proud čas na jejich zpracování, což způsobí selhání.

    Z těchto důvodů doporučuje datacihly použít tuto techniku pouze u statických datových sad, které musí být čteny pomocí externích nástrojů.