Öğretici: Kullanmaya başlayın için .NET ile Apache Spark
Bu öğreticide, Windows, macOS ve Ubuntu'da .NET Core kullanarak Apache Spark için bir .NET çalıştırmayı öğretir.
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Ortamınızı .NET için Apache Spark
- Uygulamanıza ilk .NET Apache Spark yazma
- Apache Spark için .NET'inizi derleme ve çalıştırma
Ortamınızı hazırlama
Uygulama yazmaya başlamadan önce bazı önkoşul bağımlılıkları ayarlamanız gerekir. komut satırı dotnet ortamınız java spark-shell ile çalıştırabilirsiniz, ortamınız zaten hazırlanmıştır ve sonraki bölüme atlayabilirsiniz. Komutlardan herhangi birini veya hepsini çalıştıramazsanız aşağıdaki adımları uygulayın.
1. .NET'i yükleme
.NET uygulamaları geliştirmeye başlamak için .NET SDK'sı (Yazılım Geliştirme Seti) indirip yüklemeniz gerekir.
.NET Core SDK. SDK'yı dotnet yüklemek, araç asanızı PATH'inize ekler.
Komut istemini yüklediğinde, .NET Core SDK komut istemini veya terminali açın ve komutunu dotnet çalıştırın.
Komut çalıştırılırsa ve dotnet kullanma hakkında bilgi yazdırırsa, sonraki adıma geçebilirsiniz. Hata alırsanız, komutu çalıştırmadan önce yeni bir komut 'dotnet' is not recognized as an internal or external command istemi veya terminal açtığınızdan emin olun.
2. Java yükleme
Windows macOS veya Ubuntu için OpenJDK 8 için Java 8.1'i yükleyin.
İşletim sisteminiz için uygun sürümü seçin. Örneğin, jdk-8u201-windows-x64.exe x64 Windows (aşağıda gösterildiği gibi) veya macOS için jdk-8u231-macosx-x64.dmg'yi seçin. Ardından, yüklemesini java doğrulamak için komutunu kullanın.

3. Sıkıştırma yazılımını yükleme
Apache Spark sıkıştırılmış .tgz dosyası olarak indirilir. Dosyayı ayıklamak için 7-Zip veya WinZipgibi bir ayıklama programı kullanın.
4. Yükleme Apache Spark
'i indirin ve Apache Spark. Sürüm 2.3.* veya 2.4.0'ı seçmeniz gerekir. 2.4.1, 2.4.3, 2.4.4, 2.4.5, 2.4.6, 2.4.7, 3.0.0 veya 3.0.1 (Apache Spark için .NET diğer Apache Spark sürümleriyle uyumlu değildir).
Aşağıdaki adımlarda kullanılan komutlar, 3.0.1 Apache Spark indirdiğiniz ve yüklediğiniz varsayılacaktır. Farklı bir sürüm kullanmak isterseniz, 3.0.1'i uygun sürüm numarasıyla değiştirin. Ardından .tar dosyasını ve dosya Apache Spark ayıklar.
İç içe geçmiş .tar dosyasını ayıklamak için:
- İndirdiğiniz spark-3.0.1-bin-hadoop2.7.tgz dosyasını bulun.
- Dosyaya sağ tıklayın ve 7-Zip -> Buradan ayıkla'yı seçin.
- spark-3.0.1-bin-hadoop2.7.tar, indirdiğiniz .tgz dosyasıyla birlikte oluşturulur.
Dosyaları ayıklamak Apache Spark için:
- spark-3.0.1-bin-hadoop2.7.tar'a sağ tıklayın ve 7-Zip -> Dosyaları ayıkla... öğesini seçin.
- Ayıkla alanına C:\bin girin.
- Ayıkla alanı altındaki onay kutusunun işaretini kaldırın.
- Tamam’ı seçin.
- Apache Spark dosyaları C:\bin\spark-3.0.1-bin-hadoop2.7\ dizinine ayıklanır

Aşağıdaki komutları çalıştırarak veri kümelerini bulmak için kullanılan ortam değişkenlerini Apache Spark. Bu Windows komut istemini yönetici modunda çalıştırarak emin olun.
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!
Her şeyi yüklemiş ve ortam değişkenlerinizi ayarlamış olduktan sonra yeni bir komut istemi veya terminal açın ve aşağıdaki komutu çalıştırın:
spark-submit --version
Komut çalışır ve sürüm bilgilerini yazdırırsa, sonraki adıma geçebilirsiniz.
Hata alırsanız 'spark-submit' is not recognized as an internal or external command yeni bir komut istemi açtığınızdan emin olun.
5. .NET'i Apache Spark
.NET for Apache Spark GitHub. .NET'den Microsoft.Spark.Worker Apache Spark GitHub. Örneğin, bir Windows makinedey ve .NET Core kullanmayı planlıyorsanız, x64 netcoreapp3.1 Windows indirin.
Microsoft.Spark.Worker'i ayıklamak için:
- İndirdiğiniz Microsoft.Spark.Worker.netcoreapp3.1.win-x64-1.0.0.zip dosyasını bulun.
- Sağ tıklayın ve 7-Zip -> Dosyaları ayıkla... seçeneğini seçin.
- Ayıkla alanına C:\bin girin.
- Ayıkla alanı altındaki onay kutusunun işaretini kaldırın.
- Tamam’ı seçin.
6. WinUtils'i yükleme (Windows)
.NET for Apache Spark, WinUtils'in uygulamayla birlikte Apache Spark. winutils.exe. Ardından WinUtils'i C:\bin\spark-3.0.1-bin-hadoop2.7\bin dizinine kopyalayın.
Not
Spark yükleme klasörü adınız sonunda açıklama ek açıklamalı olan farklı bir Hadoop sürümü kullanıyorsanız, Hadoop sürümünüzle uyumlu WinUtils sürümünü seçin.
7. DOTNET_WORKER_DIR ayarlama ve bağımlılıkları denetleme
.NET uygulamaları tarafından çalışan ikilileri için .NET'i bulmak için kullanılan ortam DOTNET_WORKER_DIR değişkenlerini ayarlamak Apache Spark çalıştırın. yerine indirdiğiniz <PATH-DOTNET_WORKER_DIR> ve ayıkladiğiniz dizinle değiştirdiğinizden emin Microsoft.Spark.Worker olun. Bu Windows komut istemini yönetici modunda çalıştırarak emin olun.
Son olarak, sonraki bölüme taşınmadan önce dotnet komut java satırınıza , , spark-shell çalıştırabilirsiniz.
Uygulama için .NET Apache Spark yazma
1. Konsol uygulaması oluşturma
Komut isteminde veya terminalde aşağıdaki komutları çalıştırarak yeni bir konsol uygulaması oluşturun:
dotnet new console -o MySparkApp
cd MySparkApp
komutu dotnet sizin için türünde bir uygulama new console oluşturur. parametresi, -o uygulamanın depolandığı MySparkApp adlı bir dizin oluşturur ve bunu gerekli dosyalarla doldurmak için kullanılır. komutu cd MySparkApp dizini oluşturduğunuz uygulama diziniyle değiştirir.
2. NuGet yükleme
.NET'i bir Apache Spark için Microsoft.Spark paketini yükleyin. Komut isteminde veya terminalde aşağıdaki komutu çalıştırın:
dotnet add package Microsoft.Spark
Not
Bu öğretici, aksi belirtilmedikçe Microsoft.Spark NuGet paketinin en son sürümünü kullanır.
3. Uygulama yazma
Program.cs'yi Visual Studio Code veya herhangi bir metin düzenleyicisinde açın ve kodun hepsini aşağıdakiyle değiştirin:
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();
}
}
}
SparkSession, Apache Spark uygulama bağlamını ve bilgilerini yöneten uygulama giriş noktasıdır. Text yöntemi kullanılarak, tarafından belirtilen dosyadan gelen metin verileri filePath bir DataFrame'e okunur. DataFrame, verileri adlandırılmış sütunlar kümesinde düzenlemenin bir yoludur. Ardından, dosyada cümleleri bölmek, her bir sözcükleri gruplamak, saymak ve azalan düzende sıralamak için bir dizi dönüştürme uygulanır. Bu işlemlerin sonucu başka bir DataFrame'de depolanır. Bu noktada, .NET for Apache Spark verileri yavaş değerlendire Apache Spark hiçbir işlem olmadığını unutmayın. Yukarıdaki satırlarda tanımlanan işlemlerin yürütülmesi için dönüştürülen DataFrame'in içeriğini konsolda görüntülemek için Show yöntemi words çağrılana kadar bu işlem olmaz. Spark oturumuna artık ihtiyacınız kalmadan, oturumlarınızı durdurmak için Stop yöntemini kullanın.
4. Veri dosyası oluşturma
Uygulamanız, metin satırları içeren bir dosyayı işler. MySparkApp input.txt aşağıdaki metni içereninput.txtadlı bir dosya oluşturun:
Hello World
This .NET app uses .NET for Apache Spark
This .NET app counts words with Apache Spark
Değişiklikleri kaydedin ve dosyayı kapatın.
.NET for Apache Spark çalıştırma
Aşağıdaki komutu çalıştırarak uygulamanızı derleme:
dotnet build
Derleme çıkış dizininize gidin ve komutunu kullanarak uygulamanın çalışma alanı spark-submit üzerinde Apache Spark. <version>' In .net çalışanınız sürümü ile ve <path-of-input.txt> input.txt dosyanın yolu ile değiştirdiğinizden emin olun.
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>
Not
Bu komut Apache Spark indirdiğinizi ve bunu kullanabilmeniz için PATH ortam değişkenine eklediğinizi varsayar spark-submit . Aksi takdirde, tam yolu kullanmanız gerekir (örneğin, C:\bin\apache-spark\bin\spark-Submit veya ~/Spark/bin/Spark-Submit).
Uygulamanız çalıştırıldığında, input.txt dosyanın sözcük sayısı verisi konsola yazılır.
+------+-----+
| 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|
+------+-----+
Tebrikler! Apache Spark uygulaması için bir .NET başarıyla yazıldı ve çalıştırdınız.
Sonraki adımlar
Bu öğreticide, şunların nasıl yapıldığını öğrendiniz:
- Apache Spark için ortamınızı .NET için hazırlama
- İlk .NET Apache Spark uygulamanızı yazma
- Apache Spark için .NET uygulamanızı derleyin ve çalıştırın
Yukarıdaki adımları açıklayan bir videoyu görmek için, Apache Spark 101 video serisine yönelik .net' i inceleyin.
Daha fazla bilgi edinmek için kaynaklar sayfasına göz atın.