Bearbeta data genom att köra U-SQL-skript i Azure Data Lake Analytics med Azure Data Factory och Synapse Analytics
GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics
Dricks
Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!
En pipeline i en Azure Data Factory- eller Synapse Analytics-arbetsyta bearbetar data i länkade lagringstjänster med hjälp av länkade beräkningstjänster. Den innehåller en sekvens med aktiviteter där varje aktivitet utför en specifik bearbetningsåtgärd. I den här artikeln beskrivs den U-SQL-aktivitet för Data Lake Analytics som kör ett U-SQL-skript på en länkad Azure Data Lake Analytics-beräkningstjänst .
Skapa ett Azure Data Lake Analytics-konto innan du skapar en pipeline med en U-SQL-aktivitet för Data Lake Analytics. Mer information om Azure Data Lake Analytics finns i Kom igång med Azure Data Lake Analytics.
Lägga till en U-SQL-aktivitet för Azure Data Lake Analytics i en pipeline med användargränssnitt
Utför följande steg för att använda en U-SQL-aktivitet för Azure Data Lake Analytics i en pipeline:
Sök efter Data Lake i fönstret Pipelineaktiviteter och dra en U-SQL-aktivitet till pipelinearbetsytan.
Välj den nya U-SQL-aktiviteten på arbetsytan om den inte redan är markerad.
Välj fliken ADLA-konto för att välja eller skapa en ny länkad Azure Data Lake Analytics-tjänst som ska användas för att köra U-SQL-aktiviteten.
Välj fliken Skript för att välja eller skapa en ny länkad lagringstjänst och en sökväg på lagringsplatsen som ska vara värd för skriptet.
Länkad Azure Data Lake Analytics-tjänst
Du skapar en länkad Azure Data Lake Analytics-tjänst för att länka en Azure Data Lake Analytics-beräkningstjänst till en Azure Data Factory- eller Synapse Analytics-arbetsyta. Data Lake Analytics U-SQL-aktiviteten i pipelinen refererar till den här länkade tjänsten.
Följande tabell innehåller beskrivningar för de allmänna egenskaper som används i JSON-definitionen.
Property | Beskrivning | Obligatoriskt |
---|---|---|
typ | Typegenskapen ska anges till: AzureDataLakeAnalytics. | Ja |
accountName | Azure Data Lake Analytics-kontonamn. | Ja |
dataLakeAnalyticsUri | Azure Data Lake Analytics-URI. | Nej |
subscriptionId | Azure-prenumerations-ID | Nej |
resourceGroupName | Azure-resursgruppsnamn | Nej |
Tjänstens huvudautentisering
Den länkade Azure Data Lake Analytics-tjänsten kräver en autentisering med tjänstens huvudnamn för att ansluta till Azure Data Lake Analytics-tjänsten. Om du vill använda autentisering med tjänstens huvudnamn registrerar du en programentitet i Microsoft Entra-ID och ger den åtkomst till både Data Lake Analytics och Data Lake Store som används. Detaljerade steg finns i Tjänst-till-tjänst-autentisering. Anteckna följande värden som du använder för att definiera den länkade tjänsten:
- Program-ID:t
- Programnyckel
- Klientorganisations-ID
Ge tjänstens huvudnamn behörighet till Azure Data Lake Analytics med hjälp av guiden Lägg till användare.
Använd autentisering med tjänstens huvudnamn genom att ange följande egenskaper:
Property | Beskrivning | Obligatoriskt |
---|---|---|
servicePrincipalId | Ange programmets klient-ID. | Ja |
servicePrincipalKey | Ange programmets nyckel. | Ja |
klientorganisation | Ange klientinformationen (domännamn eller klient-ID) som programmet finns under. Du kan hämta den genom att hovra musen i det övre högra hörnet av Azure Portal. | Ja |
Exempel: Autentisering med tjänstens huvudnamn
{
"name": "AzureDataLakeAnalyticsLinkedService",
"properties": {
"type": "AzureDataLakeAnalytics",
"typeProperties": {
"accountName": "<account name>",
"dataLakeAnalyticsUri": "<azure data lake analytics URI>",
"servicePrincipalId": "<service principal id>",
"servicePrincipalKey": {
"value": "<service principal key>",
"type": "SecureString"
},
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
"subscriptionId": "<optional, subscription id of ADLA>",
"resourceGroupName": "<optional, resource group name of ADLA>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Mer information om den länkade tjänsten finns i Beräkna länkade tjänster.
Data Lake Analytics U-SQL-aktivitet
Följande JSON-kodfragment definierar en pipeline med en U-SQL-aktivitet för Data Lake Analytics. Aktivitetsdefinitionen har en referens till den länkade Azure Data Lake Analytics-tjänsten som du skapade tidigare. För att köra ett U-SQL-skript för Data Lake Analytics skickar tjänsten det skript som du angav till Data Lake Analytics, och de indata och utdata som krävs definieras i skriptet för Data Lake Analytics för att hämta och mata ut.
{
"name": "ADLA U-SQL Activity",
"description": "description",
"type": "DataLakeAnalyticsU-SQL",
"linkedServiceName": {
"referenceName": "<linked service name of Azure Data Lake Analytics>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"scriptLinkedService": {
"referenceName": "<linked service name of Azure Data Lake Store or Azure Storage which contains the U-SQL script>",
"type": "LinkedServiceReference"
},
"scriptPath": "scripts\\kona\\SearchLogProcessing.txt",
"degreeOfParallelism": 3,
"priority": 100,
"parameters": {
"in": "/datalake/input/SearchLog.tsv",
"out": "/datalake/output/Result.tsv"
}
}
}
I följande tabell beskrivs namn och beskrivningar av egenskaper som är specifika för den här aktiviteten.
Property | Beskrivning | Obligatoriskt |
---|---|---|
name | Namnet på aktiviteten i pipelinen | Ja |
description | Text som beskriver vad aktiviteten gör. | Nej |
type | För Data Lake Analytics U-SQL-aktivitet är aktivitetstypen DataLakeAnalyticsU-SQL. | Ja |
linkedServiceName | Länkad tjänst till Azure Data Lake Analytics. Mer information om den här länkade tjänsten finns i artikeln Compute linked services (Beräkningslänkade tjänster ). | Ja |
scriptPath | Sökväg till mappen som innehåller U-SQL-skriptet. Namnet på filen är skiftlägeskänsligt. | Ja |
scriptLinkedService | Länkad tjänst som länkar Azure Data Lake Store eller Azure Storage som innehåller skriptet | Ja |
degreeOfParallelism | Det maximala antalet noder som används samtidigt för att köra jobbet. | Nej |
prioritet | Avgör vilka jobb av alla som är i kö ska väljas för att köras först. Desto lägre tal, desto högre prioritet. | Nej |
parametrar | Parametrar som ska skickas till U-SQL-skriptet. | Nej |
runtimeVersion | Körningsversion av U-SQL-motorn som ska användas. | Nej |
compilationMode | Kompileringsläge för U-SQL. Måste vara ett av följande värden: Semantisk: Utför endast semantiska kontroller och nödvändiga sanitetskontroller, Fullständig: Utför den fullständiga kompilering, inklusive syntaxkontroll, optimering, kodgenerering osv., SingleBox: Utför den fullständiga kompilering, med TargetType-inställningen till SingleBox. Om du inte anger något värde för den här egenskapen avgör servern det optimala kompileringsläget. |
Nej |
Se SearchLogProcessing.txt för skriptdefinitionen.
Exempel på U-SQL-skript
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int,
Urls string,
ClickedUrls string
FROM @in
USING Extractors.Tsv(nullEscape:"#NULL#");
@rs1 =
SELECT Start, Region, Duration
FROM @searchlog
WHERE Region == "en-gb";
@rs1 =
SELECT Start, Region, Duration
FROM @rs1
WHERE Start <= DateTime.Parse("2012/02/19");
OUTPUT @rs1
TO @out
USING Outputters.Tsv(quoting:false, dateTimeFormat:null);
I skriptexemplet ovan definieras indata och utdata till skriptet i parametrarna @in och @out . Värdena för parametrarna @in och @out i U-SQL-skriptet skickas dynamiskt av tjänsten med hjälp av avsnittet parametrar.
Du kan ange andra egenskaper som degreeOfParallelism och prioritet samt i pipelinedefinitionen för jobben som körs på Azure Data Lake Analytics-tjänsten.
Dynamiska parametrar
I exempelpipelinedefinitionen tilldelas in- och utparametrar med hårdkodade värden.
"parameters": {
"in": "/datalake/input/SearchLog.tsv",
"out": "/datalake/output/Result.tsv"
}
Det går att använda dynamiska parametrar i stället. Till exempel:
"parameters": {
"in": "/datalake/input/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/data.tsv",
"out": "/datalake/output/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/result.tsv"
}
I det här fallet hämtas fortfarande indatafiler från mappen /datalake/input och utdatafiler genereras i mappen /datalake/output. Filnamnen är dynamiska baserat på starttiden för fönstret som skickas när pipelinen utlöses.
Relaterat innehåll
Se följande artiklar som förklarar hur du transformerar data på andra sätt: