Az Apache Sparkhoz készült .NET használata az Azure Stream Analyticsszel

Az Apache Sparkhoz készült .NET ingyenes, nyílt forráskódú és platformfüggetlen .NET-támogatást biztosít a Sparkhoz.

.NET-kötéseket biztosít a Sparkhoz, így C# és F# használatával érheti el a Spark API-kat. Az Apache Sparkhoz készült .NET használatával felhasználó által definiált függvényeket is írhat és hajthat végre a .NET-ben írt Sparkhoz. A Sparkhoz készült .NET API-k lehetővé teszik a Spark DataFrame-ek minden olyan aspektusának elérését, amely segít az adatok elemzésében, beleértve a Spark SQL-t, a Delta Lake-t és a strukturált streamelést.

Adatokat elemezhet az Apache Sparkhoz készült .NET-lel a Spark kötegelt feladatdefinícióival vagy interaktív Azure Synapse Analytics-jegyzetfüzetekkel. Ebből a cikkből megtudhatja, hogyan használhatja a .NET-et az Apache Sparkhoz az Azure Synapse-hez mindkét technikával.

Fontos

Az Apache Sparkhoz készült .NET egy nyílt forráskódú projekt a .NET Foundation alatt, amelyhez jelenleg a .NET 3.1 kódtárra van szükség, amely elérte a nem támogatott állapotot. Tájékoztatni szeretnénk az Azure Synapse Spark felhasználóit az Apache Sparkhoz készült .NET-kódtár eltávolításáról az Azure Synapse Runtime for Apache Spark 3.3-ban. A felhasználók további részletekért tekintse meg a .NET támogatási szabályzatát .

Ennek eredményeképpen a felhasználók már nem használhatják az Apache Spark API-kat C# és F# használatával, vagy C# kódot hajthatnak végre a Synapse-ban lévő jegyzetfüzetekben vagy a Synapse Apache Spark-feladatdefinícióiban. Fontos megjegyezni, hogy ez a változás csak az Apache Spark 3.3-hoz és újabb verziókhoz készült Azure Synapse Runtime-ra van hatással.

Továbbra is támogatjuk az Apache Sparkhoz készült .NET-t az Azure Synapse Runtime összes korábbi verziójában az életciklusuk szakaszainak megfelelően. Az Apache Sparkhoz készült .NET-et azonban nem tervezzük támogatni az Azure Synapse Runtime for Apache Spark 3.3-hoz és a jövőbeli verziókhoz. Javasoljuk, hogy a C# vagy F# nyelven írt meglévő számítási feladatokkal rendelkező felhasználók áttelepüljenek a Pythonba vagy a Scalába. A felhasználóknak javasoljuk, hogy jegyezze fel ezeket az információkat, és ennek megfelelően tervezze meg őket.

Kötegelt feladatok elküldése a Spark-feladat definíciójával

Az oktatóanyagból megtudhatja, hogyan hozhat létre Apache Spark-feladatdefiníciókat a Synapse Spark-készletekhez az Azure Synapse Analytics használatával. Ha még nem csomagolta be az alkalmazást az Azure Synapse-be való küldéshez, hajtsa végre az alábbi lépéseket.

  1. Konfigurálja az dotnet alkalmazásfüggőségeket a Synapse Sparkkal való kompatibilitás érdekében. A szükséges .NET Spark-verziót a Synapse Studio felületén, az Apache Spark-készlet konfigurációja alatt, a Manage eszközkészlet alatt jegyezzük fel.

    Screenshot that shows properties, including the .NET Spark version.

    Hozza létre a projektet .NET-konzolalkalmazásként, amely egy Ubuntu x86-végrehajtható fájlt ad ki.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.Spark" Version="2.1.0" />
      </ItemGroup>
    
    </Project>
    
  2. Futtassa az alábbi parancsokat az alkalmazás közzétételéhez. Mindenképpen cserélje le a mySparkAppot az alkalmazás elérési útjára.

    cd mySparkApp
    dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.18.04-x64
    
  3. Tömörítse be a közzétételi mappa tartalmát, publish.zip amely például az 1. lépés eredményeként jött létre. Az összes szerelvénynek a ZIP-fájl gyökerében kell lennie, és nem lehet köztes mapparéteg. Ez azt jelenti, hogy a kicsomagoláskor publish.zipa rendszer az összes szerelvényt kinyeri az aktuális munkakönyvtárba.

    Windows rendszeren:

    A Windows PowerShell vagy a PowerShell 7 használatával hozzon létre egy .zip fájlt a közzétételi könyvtár tartalmából.

    Compress-Archive publish/* publish.zip -Update
    

    Linuxon:

    Nyisson meg egy bash shellt és cd-t a bin könyvtárba az összes közzétett bináris fájllal, és futtassa a következő parancsot.

    zip -r publish.zip
    

.NET az Apache Sparkhoz az Azure Synapse Analytics-jegyzetfüzetekben

A jegyzetfüzetek nagyszerű lehetőséget biztosítanak az Apache Spark-folyamatok és -forgatókönyvek .NET-hez való prototípus-készítéshez. Gyorsan és hatékonyan dolgozhat az adatokkal, megértheti, szűrheti, megjelenítheti és vizualizálhatja az adatokat.

Az adatmérnökök, adattudósok, üzleti elemzők és gépi tanulási mérnökök közösen dolgozhatnak egy megosztott, interaktív dokumentumon. Azonnali eredményeket láthat az adatfeltárásból, és megjelenítheti az adatokat ugyanabban a jegyzetfüzetben.

A .NET használata Apache Spark-jegyzetfüzetekhez

Új jegyzetfüzet létrehozásakor kiválaszt egy nyelvi kernelt, amelyet ki szeretne fejezni az üzleti logikában. A kernel támogatása több nyelvhez is elérhető, beleértve a C#-ot is.

Ha az Azure Synapse Analytics-jegyzetfüzetben szeretné használni az Apache Sparkhoz készült .NET-t, válassza a .NET Sparkot (C#) kernelként, és csatolja a jegyzetfüzetet egy meglévő kiszolgáló nélküli Apache Spark-készlethez.

A .NET Spark-jegyzetfüzet a .NET interaktív élményeken alapul, és interaktív C#-élményeket biztosít, és lehetővé teszi a .NET használatát a Sparkhoz a már előre definiált Spark-munkamenetváltozóval spark együtt.

NuGet-csomagok telepítése jegyzetfüzetekben

A jegyzetfüzetbe a NuGet-csomag neve előtti varázsparancs használatával #r nuget telepítheti a kívánt NuGet-csomagokat. Az alábbi ábrán egy példa látható:

Screenshot that shows using #r to install a Spark .NET notebook NuGet package

Ha többet szeretne megtudni a NuGet-csomagok jegyzetfüzetekben való használatáról, tekintse meg a .NET interaktív dokumentációját.

Apache Sparkhoz készült .NET – C# kernelfunkciók

A következő funkciók érhetők el, ha az Azure Synapse Analytics-jegyzetfüzetben az Apache Sparkhoz készült .NET-et használja:

  • Deklaratív HTML: Kimenetet hozhat létre a cellákból HTML-szintaxissal, például fejlécekkel, listajeles listák használatával, és képeket is megjeleníthet.
  • Egyszerű C#-utasítások (például hozzárendelések, konzolra való nyomtatás, kivételek kivetése stb.).
  • Többsoros C# kódblokkok (például ha utasítások, foreach hurkok, osztálydefiníciók stb.).
  • Hozzáférés a standard C#-kódtárhoz (például System, LINQ, Enumerables stb.).
  • A C# 8.0 nyelvi funkcióinak támogatása.
  • spark előre definiált változóként, amely hozzáférést biztosít az Apache Spark-munkamenethez.
  • Az Apache Sparkban futtatható .NET felhasználó által definiált függvények definiálásának támogatása. Javasoljuk, hogy az Apache Spark Interactive-környezetekhez tartozó .NET-beli UDF-eket írjon és hívjon meg, hogy megtanulja, hogyan használhatja az UDF-eket a .NET-ben apache Spark Interactive-élményekhez.
  • Támogatja a Spark-feladatok kimenetének vizualizációját különböző diagramok (például vonal, sáv vagy hisztogram) és elrendezések (például önálló, átfedéses stb.) használatával a XPlot.Plotly kódtár használatával.
  • NuGet-csomagok belefoglalása a C#-jegyzetfüzetbe.

Hibaelhárítás

DotNetRunner: null / Futures timeout a Synapse Spark-feladatdefiníció futtatásában

A Spark-készletekBen a Spark 2.4-et használó Synapse Spark-feladatdefiníciókhoz Microsoft.Spark 1.0.0 szükséges. Törölje a bin könyvtárakat és obj a könyvtárakat, és tegye közzé a projektet az 1.0.0 használatával.

OutOfMemoryError: java halomterület a org.apache.spark webhelyen

A Dotnet Spark 1.0.0 más hibakeresési architektúrát használ, mint az 1.1.1+. A közzétett verzióhoz az 1.0.0, a helyi hibakereséshez pedig az 1.1.1+ verziót kell használnia.

Következő lépések