イントロ
目的
マシンで .NET for Apache Spark を設定し、最初のアプリケーションをビルドします。
前提条件
Linux または Windows 64 ビットのオペレーティング システム。
完了までの時間
10分 + ダウンロード/インストール時間
シナリオ
Apache Spark を使用して、1つのコレクションの文で各単語が出現する回数をカウントします。
.NET のインストール
.NET アプリの構築を開始するには、.NET SDK (ソフトウェア開発キット) をダウンロードしてインストールします。
すべてが正しくインストールされていることを確認する
インストールが完了したら、新しい コマンド プロンプトを開き、次のコマンドを実行します:
インストールが完了したら、新しい ターミナルを開き、次のコマンドを実行します:
インストールが成功した場合、次のような出力が表示されます:
Command prompt
Usage: dotnet [options]
Usage: dotnet [path-to-application]
Options:
-h|--help Display help.
--info Display .NET information.
--list-sdks Display the installed SDKs.
--list-runtimes Display the installed runtimes.
path-to-application:
The path to an application .dll file to execute.
問題がなければ、下の [続行] を選択して次の手順に進みます。
エラーが発生しましたか?
“'dotnet' は内部コマンドまたは外部コマンドとして認識されていません ” というエラーを受信した場合は、新しい コマンド プロンプトを開いていることを確認してください。問題が解決しない場合は、[問題発生] ボタンを押して、問題解決のためのサポートを受けてください。
dotnet: コマンドが見つかりません エラーが発生した場合は、新しい ターミナル ウィンドウが開かれていることを確認してください。問題を解決できない場合は、[問題が発生しました ] ボタンを使用して、問題の修正方法を確認してください。
必須コンポーネントのインストール
.NET for Apache Spark は、64 ビット バージョンの Windows オペレーティング システムで実行され、この時点以降は同じものと見なされます。
7-zip のインストール
Apache Spark は、圧縮された tgz ファイルとしてダウンロードされます。ファイルを展開するには、7-zip が必要です。
代替の抽出プログラムがすでにインストールされている場合は、代わりにそれを使用できます。
7-Zip ダウンロード にアクセスします。
ページの最初の表で、64-bit x64 ダウンロードを選択します。
ダウンロードが完了したら、インストーラーを実行します。
Java のインストール
Apache Spark には、Java SE Development Kit (JDK) 8 または 11 が必要です。このチュートリアルではバージョン 8 を使用していますが、既にインストールされている場合はバージョン 11 を使用することもできます。
Java SE Development Kit 8 のダウンロード にアクセスします。
Java SE Development Kit 8u291 セクションを検索します。
Windows x64 のダウンロードをクリックします。
使用許諾契約書を確認し、承諾できる場合は同意します。
Oracle では、JDK をダウンロードするためのアカウントが必要です。 そのため、既存のアカウントにサインインするか、アカウント登録プロセスを完了してダウンロードを開始してください。
ダウンロードが完了したら、既定の設定を使用してインストーラーを実行します。
インストールが完了したら、新しい コマンド プロンプトを開き、次のコマンドを実行します:
Command prompt Copy
java -version
このコマンドが実行され、Java バージョン情報が表示されれば問題ありません。
コマンドが失敗し、問題を解決できない場合は、[問題発生 ] ボタンを使用して、問題解決のためのサポートを受けることができます。
Java のインストール
Apache Spark には、Java 開発キット (JDK) が必要です。
ターミナルを開き、次のコマンドを実行して Java SE Development Kit (JDK) 11 をインストールします:
Command prompt Copy
sudo apt-get install default-jdk
すべてが正しくインストールされていることを確認する
前のコマンドが完了したら、次のコマンドを実行します:
Command prompt Copy
java -version
このコマンドが実行され、Java バージョン情報が表示されれば問題ありません。
コマンドが失敗し、問題を解決できない場合は、[問題発生 ] ボタンを使用して、問題解決のためのサポートを受けることができます。
Apache Spark のインストール
Apache Spark のダウンロード
Apache Spark は、.tgz ファイルとしてダウンロードされます。
Apache Spark 3.0.1 のダウンロード
Apache Spark の抽出
入れ子になった .tar ファイルを抽出します:
ダウンロードした spark-3.0.1-bin-hadoop2.7.tgz ファイルを配置します。
ファイルを右クリックし、7-Zip > こちらで抽出 を選択します。
spark-3.0.1-bin-hadoop2.7.tar が、ダウンロードした .tgz ファイルと共に作成されます。
Apache Spark ファイルの抽出:
spark-3.0.1-bin-hadoop2.7.tar を右クリックして、[7-Zip] > [ファイルの抽出] を選択します。
[抽出先] フィールドに、「C: Bin 」 と入力してください。
[抽出先] フィールドの下のチェックボックスをオフにします。
[OK] ボタンを選択します。
Apache Spark ファイルは、C:\bin\spark-3.0.1-bin-hadoop2.7\ に抽出されます。
管理者モードで 新しい コマンド プロンプトを開き、次のコマンドを実行して、Apache Spark の検索に使用する環境変数を設定します:
Command prompt Copy
setx HADOOP_HOME C:\bin\spark-3.0.1-bin-hadoop2.7\
setx SPARK_HOME C:\bin\spark-3.0.1-bin-hadoop2.7\
setx /M PATH "%PATH%;%HADOOP_HOME%;%SPARK_HOME%\bin"
Spark バージョンの確認
すべてをインストールして環境変数を設定したら、新しい コマンドプロンプトまたはターミナルを開き、次のコマンドを実行します:
Command prompt Copy
spark-submit --version
コマンドを実行し、バージョン情報を印刷すると、次の手順に進むことができます。'spark-submit' is not recognized as an internal or external command (`spark-submit` が内部または外部コマンドとして認識されない) というエラーを受信した場合には、新規の コマンド プロンプトを開いていることを確認してください。
Apache Spark の抽出
ターミナルで、ダウンロードしたファイルを含むフォルダーに移動して、次のコマンドを実行します:
Terminal Copy
mkdir ~/bin
tar xvf spark-3.0.1-bin-hadoop2.7.tgz --directory ~/bin
次のコマンドを実行して、必要な環境変数を設定します。
Terminal Copy
export SPARK_HOME=~/bin/spark-3.0.1-bin-hadoop2.7
export PATH="$SPARK_HOME/bin:$PATH"
source ~/.bashrc
Spark バージョンの確認
以下のコマンドを実行して、Spark が正しくインストールされていることを確認します。
Terminal Copy
spark-submit --version
Apache Spark 向け .NET のインストール
.NET for Apache Spark GitHub リポジトリから Microsoft.Spark.Worker リリースをダウンロードします:
.NET for Apache Spark (v1.0.0) のダウンロード
Microsoft Spark.Worker を抽出します
ダウンロードした Microsoft.Spark.Worker.netcoreapp3.1.win-x64-1.0.0.zip ファイルを見つけます。
右クリックして、7-Zip > 抽出ファイル を選択します。
[抽出先] フィールドに、「C: Bin 」 と入力してください。
[抽出先] フィールドの下のチェックボックスをオフにします。
[OK] ボタンを選択します。
WinUtils のインストール
.NET for Apache Spark では、WinUtils を Apache Spark と一緒にインストールする必要があります。
Winutils のダウンロード
winutils.exe をダウンロードしたら、それを C:\bin\spark-3.0.1-bin-hadoop2.7\bin にコピーします。
DOTNET_WORKER_DIR の設定
次のコマンドを実行して、DOTNET_WORKER_DIR
環境変数を設定します。 これは、.NET for Apache Spark 用の .NET を見つけるために .NET アプリによって使用されます。
Command prompt Copy
setx DOTNET_WORKER_DIR "C:\bin\Microsoft.Spark.Worker-1.0.0"
最後に、次のセクションに進む前に、コマンドラインから spark-shell
を実行できることをもう一度確認してください。CTRL + D を押して Spark を終了します。
.NET for Apache Spark のダウンロード
.NET for Apache Spark は、.tgz ファイルとしてダウンロードされます。
.NET for Apache Spark (v1.0.0) のダウンロード
Microsoft Spark.Worker を抽出します:
ターミナルで、ダウンロードしたファイルを含むフォルダーに移動して、次のコマンドを実行します:
Terminal Copy
tar xvf Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-1.0.0.tar.gz --directory ~/bin
DOTNET_WORKER_DIR の設定
次のコマンドを実行して、DOTNET_WORKER_DIR
環境変数を設定します。 これは、.NET for Apache Spark 用の .NET を見つけるために .NET アプリによって使用されます。
Command prompt Copy
export DOTNET_WORKER_DIR="~/bin/Microsoft.Spark.Worker-1.0.0"
アプリを作成する
コマンド プロンプトで、次のコマンドを実行してアプリを作成します:
ターミナルで、次のコマンドを実行してアプリを作成します:
Command prompt Copy
dotnet new console -f netcoreapp3.1 -o mySparkApp
次に、前のコマンドで作成された新しいディレクトリに移動します:
Command prompt Copy
cd mySparkApp
dotnet
コマンドを使用すると、タイプ console
タイプの new
アプリケーションが作成されます。-o
パラメーターにより、アプリが格納されている mySparkApp
という名前のディレクトリが作成され、必要なファイルが設定されます。cd mySparkApp
コマンドを使用すると、新しく作成されたアプリ ディレクトリに移動します。
NuGet パッケージのインストール
アプリ内の Apache Spark に .NET を使用するには、プロジェクトに Microsoft Spark パッケージを追加する必要があります。コマンド プロンプトで、次のコマンドを実行します:
アプリ の Apache Spark に .NET を使用するには、Microsoft.Spark パッケージをプロジェクトに追加する必要があります。ターミナルで、次のコマンドを実行します:
Command prompt Copy
dotnet add package Microsoft.Spark --version 1.0.0
データ ファイルの追加
アプリでは、テキストの行を含むファイルを処理します。
mySparkApp
ディレクトリに次のテキストを含むinput.txt
ファイルを作成します。
input.txt Copy
Hello World
This .NET app uses .NET for Apache Spark
This .NET app counts words with Apache Spark
アプリのコード記述
任意のテキスト エディターで Program.cs
を開き、すべてのコードを次のように置き換えます:
Program.cs Copy
using Microsoft.Spark.Sql;
namespace MySparkApp
{
class Program
{
static void Main(string[] args)
{
// Create a Spark session
SparkSession spark = SparkSession
.Builder()
.AppName("word_count_sample")
.GetOrCreate();
// Create initial DataFrame
DataFrame dataFrame = spark.Read().Text("input.txt");
// Count words
DataFrame words = dataFrame
.Select(Functions.Split(Functions.Col("value"), " ").Alias("words"))
.Select(Functions.Explode(Functions.Col("words"))
.Alias("word"))
.GroupBy("word")
.Count()
.OrderBy(Functions.Col("count").Desc());
// Show results
words.Show();
// Stop Spark session
spark.Stop();
}
}
}
アプリケーションを実行する
アプリケーションが格納されているディレクトリに移動した後、次のコマンドを実行してアプリケーションをビルドします:
Command prompt Copy
dotnet build
次のコマンドを実行して、Apache Spark で実行するアプリケーションを送信します (注: mySparkApp
ディレクトリに input.txt
があることを確認してください):
Command prompt Copy
spark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local bin\Debug\netcoreapp3.1\microsoft-spark-3-0_2.12-1.0.0.jar dotnet bin\Debug\netcoreapp3.1\mySparkApp.dll
Terminal Copy
spark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local bin/Debug/netcoreapp3.1/microsoft-spark-3-0_2.12-1.0.0.jar dotnet bin/Debug/netcoreapp3.1/mySparkApp.dll
アプリが正常に実行されると、コンソールに書き込まれたデータが表示されます。
Command prompt
... logging ...
+------+-----+
| 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|
+------+-----+
... logging ...
Spark が一時ディレクトリから jar ファイルを削除できなかったことを示すエラーが発生することがあります。これは既知のエラーであり、アプリケーションの出力には影響しません。