Delen via


Meer informatie over het oplossen van U-SQL-runtimefouten vanwege runtimewijzigingen

Belangrijk

Azure Data Lake Analytics is op 29 februari 2024 buiten gebruik gesteld. Meer informatie vindt u in deze aankondiging.

Voor gegevensanalyse kan uw organisatie gebruikmaken van Azure Synapse Analytics- of Microsoft Fabric-.

De Azure Data Lake U-SQL-runtime, waaronder de compiler, optimizer en jobmanager, verwerkt uw U-SQL-code.

Uw U-SQL-runtimeversie kiezen

Wanneer u U-SQL-taken verzendt vanuit Visual Studio, de ADL SDK of de Azure Data Lake Analytics-portal, gebruikt uw taak de momenteel beschikbare standaardruntime. Nieuwe versies van de U-SQL-runtime worden regelmatig uitgebracht en bevatten zowel secundaire updates als beveiligingsoplossingen.

U kunt ook een aangepaste runtimeversie kiezen; omdat u een nieuwe update wilt uitproberen, een oudere versie van een runtime moet blijven gebruiken of als er een hotfix is opgegeven voor een gemeld probleem waarbij u niet kunt wachten op de reguliere nieuwe update.

Waarschuwing

Het kiezen van een runtime die verschilt van de standaardinstelling heeft de mogelijkheid om uw U-SQL-taken te verbreken. Gebruik deze andere versies alleen om te testen.

In zeldzame gevallen kan Microsoft Ondersteuning een andere versie van een runtime vastmaken als de standaardinstelling voor uw account. Zorg ervoor dat u deze pin zo snel mogelijk terugdraait. Als u vastgemaakt blijft aan die versie, verloopt deze op een later tijdstip.

De U-SQL-runtimeversie van uw taken bewaken

U kunt de geschiedenis zien van welke runtimeversie uw eerdere taken in de taakgeschiedenis van uw account hebben gebruikt via de taakbrowser van Visual Studio of de taakgeschiedenis van Azure Portal.

  1. Ga in Azure Portal naar uw Data Lake Analytics-account.
  2. Selecteer Alle taken weergeven. Er wordt een lijst weergegeven met alle actieve en onlangs voltooide taken in het account.
  3. Selecteer desgewenst Filter om de taken te vinden op tijdsbereik, taaknaam en auteur .
  4. U kunt de runtime zien die wordt gebruikt in de voltooide taken.

De runtimeversie van een eerdere taak weergeven

De beschikbare runtimeversies veranderen in de loop van de tijd. De standaardruntime wordt altijd 'standaard' genoemd en we houden ten minste de vorige runtime enige tijd beschikbaar en maken speciale runtimes om verschillende redenen beschikbaar. Expliciet benoemde runtimes volgen doorgaans de volgende indeling (cursieve tekst wordt gebruikt voor variabele onderdelen en [] geeft optionele delen aan).

release_YYYYMMDD_adl_buildno[_modifier]

Release_20190318_adl_3394512_2 betekent bijvoorbeeld de tweede versie van de build 3394512 van de runtimerelease van 18 maart 2019 en release_20190318_adl_3394512_private een privé-build van dezelfde release. Opmerking: De datum is gerelateerd aan wanneer de laatste check-in is genomen voor die release en niet noodzakelijkerwijs de officiële releasedatum.

Problemen met U-SQL Runtime-versie oplossen

Er zijn twee mogelijke runtimeversieproblemen die u kunt tegenkomen:

  1. Een script of een gebruikerscode wijzigt het gedrag van de ene release naar de volgende. Dergelijke belangrijke wijzigingen worden normaal gesproken van tevoren gecommuniceerd met de publicatie van releasenotes. Als u een dergelijke belangrijke wijziging tegenkomt, neemt u contact op met Microsoft Ondersteuning om dit belangrijke gedrag te melden (voor het geval dit nog niet is gedocumenteerd) en dient u uw taken in tegen de oudere runtimeversie.

  2. U hebt een niet-standaardruntime expliciet of impliciet gebruikt wanneer deze is vastgemaakt aan uw account en die runtime na enige tijd is verwijderd. Als er ontbrekende runtimes optreden, voert u een upgrade uit van uw scripts om uit te voeren met de huidige standaardruntime. Neem contact op met Microsoft Ondersteuning als u meer tijd nodig hebt

Bekende problemen

  1. Als u verwijst naar Newtonsoft.Json-bestand versie 12.0.3 of hoger in een USQL-script, wordt de volgende compilatiefout veroorzaakt:

    "Het spijt ons; taken die worden uitgevoerd in uw Data Lake Analytics-account, worden waarschijnlijk langzamer uitgevoerd of mislukken. Een onverwacht probleem voorkomt dat deze functionaliteit automatisch wordt hersteld naar uw Azure Data Lake Analytics-account. Azure Data Lake-technici zijn gecontacteerd om dit te onderzoeken.

    Waar de aanroepstack het volgende bevat:
    System.IndexOutOfRangeException: Index was outside the bounds of the array.
    at Roslyn.Compilers.MetadataReader.PEFile.CustomAttributeTableReader.get_Item(UInt32 rowId)
    ...

    Oplossing: Gebruik Newtonsoft.Json-bestand v12.0.2 of lager.

  2. Klanten kunnen tijdelijke bestanden en mappen in hun winkel zien. Deze worden geproduceerd als onderdeel van de normale taakuitvoering, maar worden meestal verwijderd voordat de klanten ze zien. Onder bepaalde omstandigheden, die zeldzaam en willekeurig zijn, kunnen ze zichtbaar blijven. Ze worden uiteindelijk verwijderd en worden nooit meegeteld als onderdeel van de gebruikersopslag of genereren enige vorm van kosten. Afhankelijk van de taaklogica van de klanten kunnen ze problemen veroorzaken. Als de taak bijvoorbeeld alle bestanden in de map opsommen en vervolgens bestandslijsten vergelijkt, kan deze mislukken vanwege de onverwachte tijdelijke bestanden die aanwezig zijn. Net zo, als een downstreamtaak alle bestanden uit een bepaalde map opsomt voor verdere verwerking, kan het ook de tijdelijke bestanden inventariseren.

    Oplossing: Er wordt een oplossing geïdentificeerd in de runtime waarin de tijdelijke bestanden worden opgeslagen in de tijdelijke map op accountniveau in plaats van in de huidige uitvoermap. De tijdelijke bestanden worden geschreven in deze nieuwe tijdelijke map en worden verwijderd aan het einde van de taakuitvoering.
    Omdat deze oplossing de klantgegevens verwerkt, is het belangrijk om deze oplossing goed te laten valideren in MSFT voordat deze wordt vrijgegeven. Naar verwachting is deze oplossing beschikbaar als bètaruntime in het midden van jaar 2021 en als standaardruntime in de tweede helft van het jaar 2021.

Zie ook