Share via


Veelgestelde vragen over automatisch laden

Veelgestelde vragen over Databricks Auto Loader.

Wordt het bestand opnieuw verwerkt wanneer het bestand wordt toegevoegd of overschreven?

Bestanden worden precies één keer verwerkt, tenzij cloudFiles.allowOverwrites deze is ingeschakeld. Wanneer een bestand wordt toegevoegd aan of overschreven, kan Azure Databricks niet garanderen welke versie van het bestand wordt verwerkt. U moet ook voorzichtig zijn bij het inschakelen cloudFiles.allowOverwrites van de bestandsmeldingsmodus, waarbij Automatisch laden nieuwe bestanden kan identificeren via zowel bestandsmeldingen als mapvermeldingen. Vanwege de discrepantie tussen de gebeurtenistijd van bestandsmeldingen en de tijd voor bestandswijziging, kan automatisch laden twee verschillende tijdstempels verkrijgen en daarom hetzelfde bestand twee keer opnemen, zelfs als het bestand maar één keer wordt geschreven.

Over het algemeen raadt Databricks u aan om autolaadprogramma's te gebruiken om alleen onveranderbare bestanden op te nemen en instelling cloudFiles.allowOverwriteste voorkomen. Als dit niet aan uw vereisten voldoet, neemt u contact op met uw Azure Databricks-accountteam.

Als mijn gegevensbestanden niet continu binnenkomen, maar met regelmatige tussenpozen, bijvoorbeeld één keer per dag, moet ik deze bron nog steeds gebruiken en zijn er voordelen?

In dit geval kunt u een Trigger.AvailableNow gestructureerde streamingtaak (beschikbaar in Databricks Runtime 10.4 LTS en hoger) instellen en plannen om te worden uitgevoerd na de verwachte aankomsttijd van het bestand. Automatisch laadprogramma werkt goed met zowel onregelmatige als frequente updates. Zelfs als de uiteindelijke updates erg groot zijn, schaalt Auto Loader goed naar de invoergrootte. De efficiënte technieken voor bestandsdetectie en de mogelijkheden voor schemaontwikkeling maken automatisch laden de aanbevolen methode voor incrementele gegevensopname.

Wat gebeurt er als ik de controlepuntlocatie wijzig bij het opnieuw opstarten van de stream?

Een controlepuntlocatie onderhoudt belangrijke identificatiegegevens van een stroom. Als u de locatie van het controlepunt wijzigt, betekent dit dat u de vorige stream hebt verlaten en een nieuwe stream hebt gestart.

Moet ik vooraf gebeurtenismeldingsservices maken?

Nee Als u de modus voor bestandsmeldingen kiest en de vereiste machtigingen opgeeft, kan Automatisch laden bestandsmeldingsservices voor u maken. Zie Wat is de meldingsmodus voor het automatisch laden van bestanden?

Hoe kan ik de gebeurtenismeldingsbronnen opschonen die zijn gemaakt door Auto Loader?

U kunt cloudresourcemanager gebruiken om resources weer te geven en te verwijderen. U kunt deze resources ook handmatig verwijderen met behulp van de gebruikersinterface of API's van de cloudprovider.

Kan ik meerdere streamingquery's uitvoeren vanuit verschillende invoermappen in dezelfde bucket/container?

Ja, zolang ze geen bovenliggende en onderliggende mappen zijn; Bijvoorbeeld, prod-logs/ en prod-logs/usage/ zou niet werken omdat /usage is een onderliggende map van /prod-logs.

Kan ik deze functie gebruiken wanneer er bestaande bestandsmeldingen zijn in mijn bucket of container?

Ja, zolang uw invoermap geen conflict veroorzaakt met het bestaande meldingsvoorvoegsel (bijvoorbeeld de bovenstaande bovenliggende en onderliggende mappen).

Hoe leidt het automatisch laden schema af?

Wanneer het DataFrame voor het eerst is gedefinieerd, geeft Auto Loader uw bronmap weer en kiest u de meest recente (door bestandswijzigingstijd) 50 GB aan gegevens of 1000 bestanden en gebruikt deze om uw gegevensschema af te leiden.

Auto Loader zorgt er ook voor dat partitiekolommen worden afgeleid door de structuur van de bronmap te controleren en te zoeken naar bestandspaden die de /key=value/ structuur bevatten. Als de bronmap een inconsistente structuur heeft, bijvoorbeeld:

base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json

Met automatisch laden worden de partitiekolommen afgeleid als leeg. Gebruik cloudFiles.partitionColumns dit om kolommen expliciet te parseren uit de mapstructuur.

Hoe gedraagt autolaadprogramma zich wanneer de bronmap leeg is?

Als de bronmap leeg is, moet u een schema opgeven omdat er geen gegevens zijn om deductie uit te voeren.

Wanneer leidt autoloader schema af? Verandert het automatisch na elke microbatch?

Het schema wordt afgeleid wanneer het DataFrame voor het eerst in uw code is gedefinieerd. Tijdens elke microbatch worden schemawijzigingen direct geëvalueerd; Daarom hoeft u zich geen zorgen te maken over prestatietreffers. Wanneer de stream opnieuw wordt opgestart, wordt het ontwikkelde schema opgehaald van de schemalocatie en wordt het uitgevoerd zonder overhead van deductie.

Wat is de invloed op de prestaties bij het opnemen van de gegevens bij het gebruik van schemadeductie voor automatisch laden?

U kunt verwachten dat schemadeductie enkele minuten duurt voor zeer grote bronmappen tijdens de initiële schemadeductie. U moet geen significante prestatietreffers observeren, anders tijdens de uitvoering van de stream. Als u uw code uitvoert in een Azure Databricks-notebook, kunt u statusupdates zien die aangeven wanneer automatisch laden uw map weergeeft voor steekproeven en het uitstellen van uw gegevensschema.

Vanwege een fout heeft een ongeldig bestand mijn schema drastisch gewijzigd. Wat moet ik doen om een schemawijziging terug te draaien?

Neem contact op met databricks-ondersteuning voor hulp.