Wat is de lijstmodus voor het automatisch laden van mappen?
Auto Loader maakt standaard gebruik van de modus voor het weergeven van mappen. In de mapvermeldingsmodus identificeert Auto Loader nieuwe bestanden door de invoermap weer te geven. Met de modus Adreslijstvermelding kunt u snel AutoLoader-streams starten zonder andere machtigingsconfiguraties dan toegang tot uw gegevens in cloudopslag.
Gebruik Databricks Runtime 9.1 of hoger voor de beste prestaties met de modus voor directoryvermeldingen. In dit artikel worden de standaardfunctionaliteit van de modus voor het weergeven van mappen en optimalisaties beschreven op basis van lexicale volgorde van bestanden.
Hoe werkt de modus voor het weergeven van mappen?
Azure Databricks heeft de modus voor het weergeven van mappen geoptimaliseerd voor Auto Loader om bestanden in cloudopslag efficiënter te detecteren dan andere Apache Spark-opties.
Als u bijvoorbeeld elke 5 minuten bestanden hebt geüpload als /some/path/YYYY/MM/DD/HH/fileName
, om alle bestanden in deze mappen te vinden, worden in de Apache Spark-bestandsbron alle submappen parallel weergegeven. Met het volgende algoritme wordt het totale aantal API-directory-aanroepen LIST
naar objectopslag geschat:
1 (basismap) + 365 (per dag) * 24 (per uur) = 8761 oproepen
Door een plat antwoord van de opslag te ontvangen, vermindert Auto Loader het aantal API-aanroepen naar het aantal bestanden in de opslag, gedeeld door het aantal resultaten dat door elke API-aanroep wordt geretourneerd, aanzienlijk minder cloudkosten. In de volgende tabel ziet u het aantal bestanden dat wordt geretourneerd door elke API-aanroep voor algemene objectopslag:
Resultaten geretourneerd per aanroep | Objectopslag |
---|---|
1000 | S3 |
5000 | ADLS Gen2 |
1024 | GCS |
Incrementele vermelding (afgeschaft)
Belangrijk
Deze functie is afgeschaft. Databricks raadt aan om de modus bestandsmeldingen te gebruiken in plaats van incrementele vermeldingen.
Notitie
Beschikbaar in Databricks Runtime 9.1 LTS en hoger.
Er is een incrementele vermelding beschikbaar voor Azure Data Lake Storage Gen2 (abfss://
), S3 (s3://
) en GCS (gs://
).
Voor lexicografische gegenereerde bestanden maakt Auto Loader gebruik van de lexicale bestandsvolgorde en geoptimaliseerde vermeldings-API's om de efficiëntie van mapvermelding te verbeteren door het weergeven van onlangs opgenomen bestanden in plaats van de inhoud van de hele map weer te geven.
Automatisch laden detecteert standaard automatisch of een bepaalde map van toepassing is op incrementele vermeldingen door bestandspaden van eerder voltooide mapvermeldingen te controleren en te vergelijken. Auto Loader activeert automatisch een volledige adreslijst na het voltooien van 7 opeenvolgende incrementele lijsten om de volledigheid van gegevens in auto
de modus te garanderen. U kunt de frequentie van volledige adreslijstlijsten beheren door in te stellen cloudFiles.backfillInterval
dat asynchrone backfills met een bepaald interval worden geactiveerd.
Lexicale volgorde van bestanden
Nieuwe bestanden die worden geüpload, moeten een voorvoegsel hebben dat lexicografisch groter is dan bestaande bestanden. Hieronder ziet u enkele voorbeelden van lexicale geordende mappen.
Versiebestanden
Delta Lake maakt doorvoeringen naar tabeltransactielogboeken in een lexicale volgorde.
<path-to-table>/_delta_log/00000000000000000000.json
<path-to-table>/_delta_log/00000000000000000001.json <- guaranteed to be written after version 0
<path-to-table>/_delta_log/00000000000000000002.json <- guaranteed to be written after version 1
...
AWS DMS uploadt CDC-bestanden op een versieversie naar AWS S3.
database_schema_name/table_name/LOAD00000001.csv
database_schema_name/table_name/LOAD00000002.csv
...
Gepartitioneerde bestanden met datums
Bestanden kunnen worden geüpload in een gepartitioneerde datumnotatie. Enkele voorbeelden hiervan zijn:
// <base-path>/yyyy/MM/dd/HH:mm:ss-randomString
<base-path>/2021/12/01/10:11:23-b1662ecd-e05e-4bb7-a125-ad81f6e859b4.json
<base-path>/2021/12/01/10:11:23-b9794cf3-3f60-4b8d-ae11-8ea320fad9d1.json
...
// <base-path>/year=yyyy/month=MM/day=dd/hour=HH/minute=mm/randomString
<base-path>/year=2021/month=12/day=04/hour=08/minute=22/442463e5-f6fe-458a-8f69-a06aa970fc69.csv
<base-path>/year=2021/month=12/day=04/hour=08/minute=22/8f00988b-46be-4112-808d-6a35aead0d44.csv <- this may be uploaded before the file above as long as processing happens less frequently than a minute
Wanneer bestanden worden geüpload met datumpartitionering, moet u rekening houden met het volgende:
- Maanden, dagen, uren, minuten moeten met nullen worden achtergelaten om lexicale volgorde te garanderen (moet worden geüpload als
hour=03
, in plaats vanhour=3
of2021/05/03
in plaats van2021/5/3
). - Bestanden hoeven niet noodzakelijkerwijs te worden geüpload in lexicale volgorde in de diepe map zolang de verwerking minder vaak plaatsvindt dan de tijdgranulariteit van de bovenliggende map.
Sommige services die bestanden kunnen uploaden in een gepartitioneerde lexicale datumvolgorde zijn:
- Azure Data Factory kan worden geconfigureerd voor het uploaden van bestanden in een lexicale volgorde. Bekijk hier een voorbeeld.
- Kinesis Firehose
Bronpad voor automatisch laden wijzigen
In Databricks Runtime 11.3 LTS en hoger kunt u het invoerpad voor de map wijzigen voor automatisch laden geconfigureerd met de modus voor adreslijstvermelding zonder dat u een nieuwe controlepuntmap hoeft te kiezen.
Waarschuwing
Deze functionaliteit wordt niet ondersteund voor de bestandsmeldingsmodus. Als de modus voor bestandsmeldingen wordt gebruikt en het pad wordt gewijzigd, kunt u mogelijk geen bestanden opnemen die al aanwezig zijn in de nieuwe map op het moment van de update van de map.
Als u bijvoorbeeld een dagelijkse opnametaak wilt uitvoeren waarmee alle gegevens uit een mapstructuur op dag worden geladen, zoals /YYYYMMDD/
, kunt u hetzelfde controlepunt gebruiken om statusgegevens in een andere bronmap elke dag bij te houden, terwijl de statusgegevens voor bestanden die zijn opgenomen uit alle eerder gebruikte bronmappen, behouden blijven.