Oktatóanyag: Első lépések az Apache Sparkhoz készült .NET-tel

Ez az oktatóanyag bemutatja, hogyan futtathat .NET for Apache Spark-alkalmazást a .NET Core használatával Windows, macOS és Ubuntu rendszeren.

Eben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • A környezet előkészítése a .NET-hez az Apache Sparkhoz
  • Az első .NET for Apache Spark-alkalmazás megírása
  • A .NET for Apache Spark-alkalmazás létrehozása és futtatása

A környezet előkészítése

Mielőtt elkezdené írni az alkalmazást, be kell állítania néhány előfeltétel-függőséget. Ha futtatható dotnetjavaspark-shell a parancssori környezetből, akkor a környezet már készen áll, és továbbléphet a következő szakaszra. Ha egyik vagy az összes parancsot sem tudja futtatni, hajtsa végre az alábbi lépéseket.

1. A .NET telepítése

A .NET-alkalmazások létrehozásának megkezdéséhez le kell töltenie és telepítenie kell a .NET SDK-t (Software Development Kit).

Töltse le és telepítse a .NET Core SDK-t. Az SDK telepítése hozzáadja az dotnet eszközláncot a PATH-hoz.

A .NET Core SDK telepítése után nyisson meg egy új parancssort vagy terminált, és futtassa a parancsot dotnet.

Ha a parancs fut, és megjeleníti a dotnet használatával kapcsolatos információkat, továbbléphet a következő lépésre. Ha hibaüzenetet 'dotnet' is not recognized as an internal or external command kap, a parancs futtatása előtt mindenképpen nyisson meg egy új parancssort vagy terminált.

2. A Java telepítése

Telepítse a Java 8.1-et Windows és macOS rendszeren, vagy az OpenJDK 8 for Ubuntu-t.

Válassza ki az operációs rendszerének megfelelő verziót. Válassza például ajdk-8u201-windows-x64.exe egy Windows x64-géphez (az alább látható módon) vagy jdk-8u231-macosx-x64.dmg macOS-hez. Ezután a paranccsal java ellenőrizze a telepítést.

Java Download

3. Tömörítő szoftver telepítése

Az Apache Spark tömörített .tgz fájlként lesz letöltve. A fájl kinyeréséhez használjon kinyerési programot,például 7 Zip vagy WinZip.

4. Az Apache Spark telepítése

Töltse le és telepítse az Apache Sparkot. A 2.3.* vagy a 2.4.0-s verzió közül kell választania, 2.4.1, 2.4.3, 2.4.4, 2.4.5, 2.4.6, 2.4.7, 3.0.0 vagy 3.0.1 (Az Apache Sparkhoz készült.NET nem kompatibilis az Apache Spark más verzióival).

A következő lépésekben használt parancsok feltételezik, hogy letöltötte és telepítette az Apache Spark 3.0.1-et. Ha másik verziót szeretne használni, cserélje le a 3.0.1-et a megfelelő verziószámra. Ezután bontsa ki a .tar fájlt és az Apache Spark-fájlokat.

A beágyazott .tar fájl kibontása:

  • Keresse meg a letöltött spark-3.0.1-bin-hadoop2.7.tgz fájlt.
  • Kattintson a jobb gombbal a fájlra, és válassza a 7-Zip -> Extract here lehetőséget.
  • A spark-3.0.1-bin-hadoop2.7.tar a letöltött .tgz fájl mellett jön létre.

Az Apache Spark-fájlok kinyerése:

  • Kattintson a jobb gombbal a spark-3.0.1-bin-hadoop2.7.tar fájlra , és válassza a 7 Zip -> Fájlok kibontás...
  • A Kinyerés mezőbe írja be a C:\bin értéket.
  • Törölje a jelet a Kinyerés mező alatti jelölőnégyzetből .
  • Válassza az OK lehetőséget.
  • Az Apache Spark-fájlokat a rendszer a C:\bin\spark-3.0.1-bin-hadoop2.7\ fájlba csomagolja ki.

Install Spark

Futtassa az alábbi parancsokat az Apache Spark megkereséséhez használt környezeti változók beállításához. A Windows győződjön meg arról, hogy rendszergazdai módban futtatja a parancssort.

setx /M HADOOP_HOME C:\bin\spark-3.0.1-bin-hadoop2.7\
setx /M SPARK_HOME C:\bin\spark-3.0.1-bin-hadoop2.7\
setx /M PATH "%PATH%;%HADOOP_HOME%;%SPARK_HOME%bin" # Warning: Don't run this if your path is already long as it will truncate your path to 1024 characters and potentially remove entries!

Miután telepített mindent, és beállította a környezeti változókat, nyisson meg egy új parancssort vagy terminált, és futtassa a következő parancsot:

spark-submit --version

Ha a parancs fut és megjeleníti a verzióadatokat, továbbléphet a következő lépésre.

Ha hibaüzenetet 'spark-submit' is not recognized as an internal or external command kap, mindenképpen nyisson meg egy új parancssort.

5. A .NET telepítése Apache Sparkhoz

Töltse le a Microsoft.Spark.Worker kiadást az Apache Spark GitHub.NET-ről. Ha például egy Windows gépen dolgozik, és a .NET Core használatát tervezi, töltse le a Windows x64 netcoreapp3.1 kiadást.

A Microsoft.Spark.Worker kibontása:

  • Keresse meg a letöltött Microsoft.Spark.Worker.netcoreapp3.1.win-x64-1.0.0.zip fájlt.
  • Kattintson a jobb gombbal, és válassza a 7 Zip -> Extract files....
  • A Kinyerés mezőbe írja be a C:\bin értéket.
  • Törölje a jelet a Kinyerés mező alatti jelölőnégyzetből .
  • Válassza az OK lehetőséget.

6. A WinUtils telepítése (csak Windows)

Az Apache Sparkhoz készült .NET használatához telepíteni kell a WinUtilst az Apache Spark mellett. winutils.exeletöltése . Ezután másolja a WinUtilst a C:\bin\spark-3.0.1-bin-hadoop2.7\bin mappába.

Megjegyzés

Ha a Hadoop egy másik verzióját használja, amely a Spark telepítési mappa nevének végén van széljegyzetekkel elvégzve, válassza ki a WinUtils azon verzióját , amely kompatibilis a Hadoop verziójával.

7. DOTNET_WORKER_DIR beállítása és a függőségek ellenőrzése

Futtassa az alábbi parancsok egyikét a környezeti változó beállításához, amelyet a DOTNET_WORKER_DIR .NET-alkalmazások használnak az Apache Spark-feldolgozó bináris fájljaihoz készült .NET megkereséséhez. Ne felejtse el lecserélni <PATH-DOTNET_WORKER_DIR> azt a könyvtárat, amelybe letöltötte és kibontotta a Microsoft.Spark.Workerfájlt. A Windows győződjön meg arról, hogy rendszergazdai módban futtatja a parancssort.

setx /M DOTNET_WORKER_DIR <PATH-DOTNET-WORKER-DIR>

Végül ellenőrizze, hogy futtatható-e dotnetjavaspark-shell a parancssorból, mielőtt továbblép a következő szakaszra.

.NET írása Apache Spark-alkalmazáshoz

1. Konzolalkalmazás létrehozása

Új konzolalkalmazás létrehozásához futtassa a következő parancsokat a parancssorban vagy a terminálban:

dotnet new console -o MySparkApp
cd MySparkApp

A dotnet parancs létrehoz egy new típusú console alkalmazást. A -o paraméter létrehoz egy MySparkApp nevű könyvtárat, ahol az alkalmazás tárolódik, és feltölti a szükséges fájlokkal. A cd MySparkApp parancs a létrehozott alkalmazáskönyvtárra módosítja a könyvtárat.

2. NuGet-csomag telepítése

Ha a .NET-et az Apache Sparkhoz szeretné használni egy alkalmazásban, telepítse a Microsoft.Spark csomagot. Futtassa a következő parancsot a parancssorban vagy a terminálban:

dotnet add package Microsoft.Spark

Megjegyzés

Ez az oktatóanyag a NuGet-csomag legújabb verzióját Microsoft.Spark használja, kivéve, ha másként van megadva.

3. Az alkalmazás írása

Nyissa meg a Program.cs fájlt Visual Studio Code-ban vagy bármely szövegszerkesztőben, és cserélje le az összes kódot a következőre:

using Microsoft.Spark.Sql;
using static Microsoft.Spark.Sql.Functions;

namespace MySparkApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create Spark session
            SparkSession spark =
                SparkSession
                    .Builder()
                    .AppName("word_count_sample")
                    .GetOrCreate();

            // Create initial DataFrame
            string filePath = args[0];
            DataFrame dataFrame = spark.Read().Text(filePath);

            //Count words
            DataFrame words =
                dataFrame
                    .Select(Split(Col("value")," ").Alias("words"))
                    .Select(Explode(Col("words")).Alias("word"))
                    .GroupBy("word")
                    .Count()
                    .OrderBy(Col("count").Desc());

            // Display results
            words.Show();

            // Stop Spark session
            spark.Stop();
        }
    }
}

A SparkSession az Apache Spark-alkalmazások belépésipontja, amely az alkalmazás környezetét és információit kezeli. A Text metódussal a rendszer a megadott fájlból filePath származó szöveges adatokat beolvassa egy DataFrame-be. A DataFrame az adatok nevesített oszlopokba való rendszerezésének egyik módja. Ezután átalakítások sorozatával felosztja a fájlban lévő mondatokat, csoportosítja az egyes szavakat, megszámolja őket, és csökkenő sorrendbe rendezi őket. Ezeknek a műveleteknek az eredménye egy másik DataFrame-ben van tárolva. Vegye figyelembe, hogy ezen a ponton nem történt művelet, mert az Apache Sparkhoz készült .NET szakaszosan értékeli ki az adatokat. A rendszer csak akkor hívja meg a Show metódust, hogy megjelenítse az words átalakított DataFrame tartalmát a konzolon, amelyet a fenti sorokban meghatározott műveletek végrehajtanak. Ha már nincs szüksége a Spark-munkamenetre, a Stop metódus használatával állítsa le a munkamenetet.

4. Adatfájl létrehozása

Az alkalmazás szövegsorokat tartalmazó fájlt dolgoz fel. Hozzon létre egy input.txt nevű fájlt a MySparkApp könyvtárban, amely a következő szöveget tartalmazza:

Hello World
This .NET app uses .NET for Apache Spark
This .NET app counts words with Apache Spark

Mentse a módosításokat, és zárja be a fájlt.

Az Apache Sparkhoz készült .NET-alkalmazás futtatása

Futtassa a következő parancsot az alkalmazás létrehozásához:

dotnet build

Keresse meg a build kimeneti könyvtárát, és a spark-submit paranccsal küldje el az alkalmazást az Apache Sparkon való futtatáshoz. Ügyeljen arra, hogy a .NET-feldolgozó verziójára és <path-of-input.txt> a input.txt fájl elérési útjára cserélje <version> le.

spark-submit ^
--class org.apache.spark.deploy.dotnet.DotnetRunner ^
--master local ^
microsoft-spark-3-0_2.12-<version>.jar ^
dotnet MySparkApp.dll <path-of-input.txt>

Megjegyzés

Ez a parancs feltételezi, hogy letöltötte az Apache Sparkot, és hozzáadta a PATH környezeti változóhoz, hogy használni spark-submittudja. Ellenkező esetben a teljes elérési utat kell használnia (például C:\bin\apache-spark\bin\spark-submit vagy ~/spark/bin/spark-submit).

Az alkalmazás futtatásakor a input.txt fájl szószámadatai a konzolra lesznek írva.

+------+-----+
|  word|count|
+------+-----+
|  .NET|    3|
|Apache|    2|
|   app|    2|
|  This|    2|
| Spark|    2|
| World|    1|
|counts|    1|
|   for|    1|
| words|    1|
|  with|    1|
| Hello|    1|
|  uses|    1|
+------+-----+

Gratulálunk! Sikeresen létrehozott és futtatott egy .NET for Apache Spark-alkalmazást.

További lépések

Ez az oktatóanyag bemutatta, hogyan végezheti el az alábbi műveleteket:

  • A környezet előkészítése a .NET-hez az Apache Sparkhoz
  • Az első .NET for Apache Spark-alkalmazás írása
  • A .NET for Apache Spark-alkalmazás létrehozása és futtatása

A fenti lépéseket bemutató videó megtekintéséhez tekintse meg az Apache Spark 101-hez készült .NET videósorozatot.

További információért tekintse meg az erőforrások oldalát.