「[[マイクロソフト系技術情報 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]
***情報源 [#w15a5a7a]
-2020/11の情報
-Microsoft Docsベース

***ローカル [#c8e7248e]
-OS~
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~
Windowsで利用できるHadoopバイナリ
---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]]で単語を数える(いきなりハードル高い)。

-コピペ用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]]から利用し、指定の日付以降の更新日付を示す。

***構造化ストリーミング [#v2288c2e]
(別名、マイクロ・バッチ)

-デモを見た限り、入力はNetcatからのテキスト行で、変換処理を行う。

-[[UDF>.NET for Apache Spark#w1fa929a]]を[[メソッド構文のSpark SQL>.NET for Apache Spark#x77ba954]]から利用し、エンリッチメントする。

-なお、ストリーミング処理では、ループを書くのではなく、StreamingQueryを使用する模様。
--これは、Spark SQL エンジンに基づいた、Structured Streamingによる。
--StreamingQueryのStartでアプリケーションが開始する。
--StreamingQueryのAwaitTerminationでアプリケーションが外部から停止されるまで実行。

-参考
--[[Spark Streaming - 開発基盤部会 Wiki > Structured Streaming>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Spark%20Streaming#z0ea8bef]]
--Spark Structured Streaming with Kafka~
https://www.slideshare.net/SotaroKimura/spark-structured-streaming-with-kafka

***[[ML.NET]] での感情分析 [#bb5afcf2]

-デモを見た限り、入力はyelptest.csvで、感情分析を行う。
-なお、学習は、yelptrain.csvを使用して行う。
-学習の結果、XXXXML.Modelプロジェクトが生成されるので、参照を追加する。
-ML処理を呼出す[[UDF>.NET for Apache Spark#w1fa929a]]を[[クエリ構文のSpark SQL>.NET for Apache Spark#x77ba954]]から利用する。

**デプロイ [#b151a3cc]
リンク先を読むと解るが差は僅か。

***[[Azure HDInsight>Azure HDInsight#g5c4a9f0]] [#y2aa662f]
***[[Azure Databricks>Azure Databricks#e7380cc6]] [#afd6d3ae]

**分散環境での入出力 [#bf921206]

***分散環境 [#o8d2ac58]
-基本的には、マネージド・サービスのクラスタを利用する。
-[[分散処理>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Apache%20Spark#ee411713]]
-[[分散処理は、Spark SQLにより、隠蔽される。>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Apache%20Spark#ee411713]]

***入出力 [#n48f44d7]
-[[.NET for Apache Sparkのデータ接続]]

**遅延評価で実現されること。 [#z135909e]
-[[自動的な分散>#o8d2ac58]]。
-[[ループで書かないストリーミング>#v2288c2e]]。

*参考 [#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

***[[Microsoft Docs > .NET for Apache Spark ガイド>.NET for Apache Spark#w086a731]] [#zd2d65ee]
-チュートリアル

--.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 での感情分析のチュートリアル~
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のデータ接続#i96a74c2]]

----
Tags: [[:クラウド]], [[:Azure]], [[:.NET開発]], [[:.NET Core]], [[:.NET Standard]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS