Förstå skillnader mellan U-SQL- och Spark-dataformat
Viktigt
Azure Data Lake Analytics drog sig tillbaka den 29 februari 2024. Läs mer med det här meddelandet.
För dataanalys kan din organisation använda Azure Synapse Analytics eller Microsoft Fabric.
Om du vill använda antingen Azure Databricks eller Azure HDInsight Spark rekommenderar vi att du migrerar dina data från Azure Data Lake Storage Gen1 till Azure Data Lake Storage Gen2.
Förutom att flytta dina filer vill du även göra dina data, lagrade i U-SQL-tabeller, tillgängliga för Spark.
Flytta data som lagras i Azure Data Lake Storage Gen1-filer
Data som lagras i filer kan flyttas på olika sätt:
- Skriv en Azure Data Factory pipeline för att kopiera data från Azure Data Lake Storage Gen1-kontot till Azure Data Lake Storage Gen2-kontot.
- Skriv ett Spark-jobb som läser data från Azure Data Lake Storage Gen1-kontot och skriver dem till Azure Data Lake Storage Gen2-kontot. Baserat på ditt användningsfall kanske du vill skriva det i ett annat format, till exempel Parquet om du inte behöver bevara det ursprungliga filformatet.
Vi rekommenderar att du läser artikeln Uppgradera dina stordataanalyslösningar från Azure Data Lake Storage Gen1 till Azure Data Lake Storage Gen2
Flytta data som lagras i U-SQL-tabeller
U-SQL-tabeller tolkas inte av Spark. Om du har data lagrade i U-SQL-tabeller kör du ett U-SQL-jobb som extraherar tabelldata och sparar dem i ett format som Spark förstår. Det lämpligaste formatet är att skapa en uppsättning Parquet-filer efter Hive-metaarkivets mapplayout.
Utdata kan uppnås i U-SQL med den inbyggda Parquet-utdatan och med hjälp av dynamisk utdatapartitionering med filuppsättningar för att skapa partitionsmapparna. Bearbeta fler filer än någonsin och använd Parquet är ett exempel på hur du skapar sådana Spark-förbrukningsbara data.
Efter den här omvandlingen kopierar du data enligt beskrivningen i kapitlet Flytta data som lagras i Azure Data Lake Storage Gen1-filer.
Varningar
Datasemantik Vid kopiering av filer sker kopian på bytenivå. Samma data bör därför visas i Azure Data Lake Storage Gen2-kontot. Observera dock att Spark kan tolka vissa tecken på olika sätt. Den kan till exempel använda en annan standard för en radgränsare i en CSV-fil. Om du kopierar inskrivna data (från tabeller) kan Parquet och Spark dessutom ha olika precision och skalning för vissa av de inskrivna värdena (till exempel en flyttal) och kan behandla null-värden på olika sätt. U-SQL har till exempel C#-semantiken för null-värden, medan Spark har en trevärdeslogik för null-värden.
U-SQL-tabeller för dataorganisation (partitionering) ger partitionering på två nivåer. Den yttre nivån (
PARTITIONED BY
) är efter värde och mappar främst till Hive/Spark-partitioneringsschemat med hjälp av mapphierarkier. Du måste se till att null-värdena mappas till rätt mapp. Den inre nivån (DISTRIBUTED BY
) i U-SQL erbjuder fyra distributionsscheman: resursallokering, intervall, hash och direkt hash. Hive/Spark-tabeller stöder endast värdepartitionering eller hashpartitionering med en annan hash-funktion än U-SQL. När du matar ut dina U-SQL-tabelldata kan du förmodligen bara mappa till värdepartitioneringen för Spark och kan behöva justera datalayouten ytterligare beroende på dina slutliga Spark-frågor.
Nästa steg
- Förstå Spark-kodbegrepp för U-SQL-utvecklare
- Uppgradera dina stordataanalyslösningar från Azure Data Lake Storage Gen1 till Azure Data Lake Storage Gen2
- .NET för Apache Spark
- Transformera data med Spark-aktivitet i Azure Data Factory
- Transformera data med Hadoop Hive-aktivitet i Azure Data Factory
- Vad är Apache Spark i Azure HDInsight