- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>.NET for Apache Spark]]
* 目次 [#je3d6ac1]
#contents
*概要 [#ee897365]
**チュートリアル [#cbcd8222]
以下のチュートリアルを実施してみた。
>[[Get started in 10 minutes>#g7fce881]]~
≒ [[.NET for Apache Spark 101>#vf8b2398]]-α~
≒ [[.NET for Apache Spark ガイド>#zd2d65ee]]-α~
≠ github.com...README.md#get-started
**前提 [#s695f3aa]
-情報源
--2020/11の情報
--Microsoft Docsベース
-ローカルはWindows
--.NET:netcoreapp3.1
--Java:jdk-8u201-windows-x64.exe
--Apache Spark
---ver:2.4.1
---パス:
C:\prog\spark\spark-2.4.1-bin-hadoop2.7
--.NET for Apache Spark
---ver:1.0.0
---パス:
C:\prog\spark\Microsoft.Spark.Worker-1.0.0
--winutils.exe
---ver:.../hadoop-2.7.1/bin/winutils.exe
---パス:
C:\prog\spark\spark-2.4.1-bin-hadoop2.7\bin
-その他
--7-Zip(インストール済み)
*詳細 [#oa8d7c9e]
**開発 [#le456446]
***[[Get started in 10 minutes>#g7fce881]] [#s680c185]
-デモを見た限り、入力はTXTファイルで単語を数える。
-[[メソッド構文のSpark SQL>.NET for Apache Spark#x77ba954]]で単語を数える(いきなりハードル高い)。
-[[分散環境では、どのように入力を取得するのか?>#bf921206]]
-コピペ用CMD
--Apache Spark
---HOMEの指定
setx /M HADOOP_HOME C:\prog\spark\spark-2.4.1-bin-hadoop2.7\
setx /M SPARK_HOME C:\prog\spark\spark-2.4.1-bin-hadoop2.7\
setx /M PATH "%PATH%;%HADOOP_HOME%;%SPARK_HOME%\bin"
---動作確認
>spark-submit --version
Welcome to
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.4.1
/_/
Using Scala version 2.11.12, Java HotSpot(TM) 64-Bit Server VM, 1.8.0_201
Branch
Compiled by user on 2019-03-26T22:44:44Z
Revision
Url
Type --help for more information.
--.NET for Apache Spark
---パス設定
setx /M DOTNET_WORKER_DIR C:\prog\spark\Microsoft.Spark.Worker-1.0.0
---動作確認~
以下のアプリをビルドして動作させる。
-アプリ
--物体~
https://github.com/OpenTouryoProject/SampleProgram/tree/master/Azure/DotNet4ApacheSpark/MySparkApp
--実行
\MySparkApp\bin\Debug\netcoreapp3.1>spark-submit ^
--class org.apache.spark.deploy.dotnet.DotnetRunner ^
--master local ^
microsoft-spark-2-4_2.11-1.0.0.jar ^
dotnet MySparkApp.dll input.txt
...
20/11/19 12:39:29 INFO CodeGenerator: Code generated in 10.4659 ms
+------+-----+
| 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|
+------+-----+
20/11/19 12:39:29 INFO SparkUI: Stopped Spark web UI at http://nishi.mshome.net:4040
...
***バッチ処理 [#l7b4829d]
-デモを見た限り、入力はCSVファイルで集計処理を行う。
-集計処理は以下の2つ
--[[メソッド構文のSpark SQL>.NET for Apache Spark#x77ba954]]で言語毎のフォークの平均回数を降順に並べる。
--[[UDF>.NET for Apache Spark#w1fa929a]]を[[メソッド構文のSpark SQL>.NET for Apache Spark#x77ba954]]から利用し、指定の日付以降の更新日付を示す。
-同様に、[[分散環境では、どのように入力を取得するのか?>#bf921206]]
***構造化ストリーミング [#v2288c2e]
(別名、マイクロ・バッチ)
-デモを見た限り、入力はNetcatからのテキスト行で、変換処理を行う。
-[[UDF>.NET for Apache Spark#w1fa929a]]を[[メソッド構文のSpark SQL>.NET for Apache Spark#x77ba954]]から利用し、エンリッチメントする。
-同様に、[[分散環境では、どのように入力を取得するのか?>#bf921206]]
***[[ML.NET]] での感情分析 [#bb5afcf2]
-デモを見た限り、入力はyelptest.csvで、感情分析を行う。
-なお、学習は、yelptrain.csvを使用して行う。
-学習の結果、XXXXML.Modelプロジェクトが生成されるので、参照を追加する。
-ML処理を呼出す[[UDF>.NET for Apache Spark#w1fa929a]]を[[クエリ構文のSpark SQL>.NET for Apache Spark#x77ba954]]から利用する。
-同様に、[[分散環境では、どのように入力を取得するのか?>#bf921206]]
**デプロイ [#b151a3cc]
リンク先を読むと解るが差は僅か。
***[[Azure HDInsight>Azure HDInsight#g5c4a9f0]] [#y2aa662f]
***[[Azure Databricks>Azure Databricks#e7380cc6]] [#afd6d3ae]
**分散環境での入力 [#bf921206]
**分散環境での入出力 [#bf921206]
***分散環境 [#o8d2ac58]
[[デプロイ>#b151a3cc]]を見ると、クラスタ上で、複数のジョブを起動すれば良い。
[[デプロイ>#b151a3cc]]を見ると、クラスタ上で、~
複数のジョブを起動すれば良い。
***入力 [#n48f44d7]
-テキスト・ファイルの場合
***入出力 [#n48f44d7]
-[[.NET for Apache Sparkのデータ接続]]
--Azure HDInsight~
[[マウントされたストレージに直接アップロード>Azure HDInsight#z4b8527c]]
--Azure Databricks~
-Clientの場合~
Serverアドレスを引数で渡せば良い。
-Server~
リスナーを起動したときのアドレスが不明。
--Azure HDInsight~
--Azure Databricks~
*参考 [#g102834f]
**msdn.com [#y8581d41]
***Channel 9 > .NET for Apache Spark 101 [#vf8b2398]
「[[.NET for Apache Spark ガイドのチュートリアル部>#zd2d65ee]]」を動画化してある。
-https://channel9.msdn.com/Series/NET-for-Apache-Spark-101
--What is .NET for Apache Spark? [1 of 8]~
https://channel9.msdn.com/Series/NET-for-Apache-Spark-101/What-is-NET-for-Apache-Spark
--Run Your First .NET for Apache Spark App [2 of 8]~
https://channel9.msdn.com/Series/NET-for-Apache-Spark-101/Run-Your-First-NET-for-Apache-Spark-App
--Batch Processing with .NET for Apache Spark [3 of 8]~
https://channel9.msdn.com/Series/NET-for-Apache-Spark-101/Batch-Processing-with-NET-for-Apache-Spark
--Structured Streaming with .NET for Apache Spark [4 of 8]~
https://channel9.msdn.com/Series/NET-for-Apache-Spark-101/Structured-Streaming-with-NET-for-Apache-Spark
--Sentiment Analysis with .NET for Apache Spark and ML.NET
---Part 1 [5 of 8]~
https://channel9.msdn.com/Series/NET-for-Apache-Spark-101/Sentiment-Analysis-with-NET-for-Apache-Spark-and-MLNET-Part-1
---Part 2 [6 of 8]~
https://channel9.msdn.com/Series/NET-for-Apache-Spark-101/Sentiment-Analysis-with-NET-for-Apache-Spark-and-MLNET-Part-2
--Deploy .NET for Apache Spark App to
---[[Azure HDInsight>Azure HDInsight#w086a731]]
---[[Azure Databricks>Azure Databricks#qb9ddd3a]]
-YouTube~
https://www.youtube.com/playlist?list=PLdo4fOcmZ0oXklB5hhg1G1ZwOJTEjcQ5z
**microsoft.com [#x7a1c48d]
***Get started in 10 minutes [#g7fce881]
https://dotnet.microsoft.com/learn/data/spark-tutorial/intro
-Install .NET~
https://dotnet.microsoft.com/learn/data/spark-tutorial/install-dotnet
-Install Prerequisites~
https://dotnet.microsoft.com/learn/data/spark-tutorial/install-pre-reqs
-Install Apache Spark~
https://dotnet.microsoft.com/learn/data/spark-tutorial/install-spark
-Install .NET for Apache Spark~
https://dotnet.microsoft.com/learn/data/spark-tutorial/install-worker
-Create your app~
https://dotnet.microsoft.com/learn/data/spark-tutorial/create
-Install NuGet package~
https://dotnet.microsoft.com/learn/data/spark-tutorial/install-package
-Add data file~
https://dotnet.microsoft.com/learn/data/spark-tutorial/data
-Code your app~
https://dotnet.microsoft.com/learn/data/spark-tutorial/code
-Run your app~
https://dotnet.microsoft.com/learn/data/spark-tutorial/run
***[[.NET for Apache Spark ガイド>.NET for Apache Spark#w086a731]] [#zd2d65ee]
のチュートリアル部
***[[Microsoft Docs > .NET for Apache Spark ガイド>.NET for Apache Spark#w086a731]] [#zd2d65ee]
-チュートリアル
-.NET for Apache Spark の概要(作業開始)~
--.NET for Apache Spark の概要(作業開始)~
(≒ [[Get started in 10 minutes>#g7fce881]])~
https://docs.microsoft.com/ja-jp/dotnet/spark/tutorials/get-started
-その他のチュートリアル
--その他のチュートリアル
.NET for Apache Spark~
--...を使用したバッチ処理のチュートリアル~
---...を使用したバッチ処理のチュートリアル~
https://docs.microsoft.com/ja-jp/dotnet/spark/tutorials/batch-processing
--...を使用した構造化ストリーミングのチュートリアル~
---...を使用した構造化ストリーミングのチュートリアル~
https://docs.microsoft.com/ja-jp/dotnet/spark/tutorials/streaming
--...と ML.NET での感情分析のチュートリアル~
---...と ML.NET での感情分析のチュートリアル~
https://docs.microsoft.com/ja-jp/dotnet/spark/tutorials/ml-sentiment-analysis
-.NET for Apache Spark アプリケーションをデプロイする~
--[[Azure HDInsight>Azure HDInsight#w086a731]]
--[[Azure Databricks>Azure Databricks#qb9ddd3a]]
--.NET for Apache Spark アプリケーションをデプロイする~
---[[Azure HDInsight>Azure HDInsight#w086a731]]
---[[Azure Databricks>Azure Databricks#qb9ddd3a]]
-使い方ガイド
--[[データーへの接続>.NET for Apache Sparkのデータ接続#i96a74c2]]
----
Tags: [[:クラウド]], [[:Azure]], [[:.NET開発]], [[:.NET Core]], [[:.NET Standard]]