Förstå skillnader mellan data formaten U-SQL och Spark
Om du vill använda antingen Azure Databricks eller Azure HDInsight Sparkrekommenderar 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 också 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 -konto till Azure Data Lake Storage Gen2 -kontot.
- Skriv ett Spark-jobb som läser data från det Azure Data Lake Storage gen1 kontot och skriver det till Azure Data Lake Storage Gen2 -kontot. Baserat på ditt användnings fall kanske du vill skriva det i ett annat format, till exempel Parquet om du inte behöver behålla det ursprungliga fil formatet.
Vi rekommenderar att du läser artikeln uppgradera dina Big data Analytics-lö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 kan inte tolkas av Spark. Om du har data som lagras i U-SQL-tabeller, kör du ett U-SQL-jobb som extraherar tabell data och sparar dem i ett format som Spark förstår. Det lämpligaste formatet är att skapa en uppsättning Parquet-filer som följer Hive-metaarkiv Folder-layouten.
Utdata kan uppnås i U-SQL med den inbyggda Parquet-utmatningen och med hjälp av dynamisk utdata partitionering med fil uppsättningar för att skapa diskpartitioner. Att bearbeta fler filer än någonsin och använda Parquet innehåller ett exempel på hur du skapar sådana Spark-förbruknings bara data.
Efter den här omvandlingen kopierar du data som beskrivs i kapitlet Flytta data lagrade i Azure Data Lake Storage gen1 filer.
Varningar
Datasemantiken vid kopiering av filer görs kopian på byte-nivån. Samma data ska visas i Azure Data Lake Storage Gen2 -kontot. Dock kan Spark tolka vissa tecken på olika sätt. Den kan till exempel använda en annan standard för en rad avgränsare i en CSV-fil. Om du däremot kopierar inskrivna data (från tabeller) kan Parquet och Spark ha olika precision och skala för några av de angivna värdena (till exempel ett float) och kan behandla null-värden på olika sätt. U-SQL har till exempel C#-semantik för null-värden, medan Spark har en tre-värdes logik för null-värden.
Data organisation (partitionering) U-SQL-tabeller tillhandahåller partitionering på två nivåer. Den yttre nivån (
PARTITIONED BY) är av värde och mappar mest till Hive/Spark-partitionerings schema med hjälp av mapphierarkier. Du måste se till att null-värden mappas till rätt mapp. Den inre nivån (DISTRIBUTED BY) i U-SQL erbjuder 4 distributions scheman: resursallokering, intervall, hash och direkt hash. Hive/Spark-tabeller stöder bara värde partitionering eller hash-partitionering, med en annan hash-funktion än U-SQL. När du matar ut dina U-SQL-tabell data kommer du förmodligen bara att kunna mappa till värdet partitionering för Spark och kan behöva göra ytterligare justeringar av datalayouten beroende på dina slutliga Spark-frågor.
Nästa steg
- Förstå Spark Code-koncept för U-SQL-utvecklare
- Uppgradera dina Big data Analytics-lö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