SparkはScalaと完全に統合されていることを知っています。ユースケースは、特に大規模なデータセット向けです。Scalaを適切にサポートしている他のツールはどれですか?Scalaはより大きなデータセットに最適ですか?または、より小さなデータセットにも適していますか?
SparkはScalaと完全に統合されていることを知っています。ユースケースは、特に大規模なデータセット向けです。Scalaを適切にサポートしている他のツールはどれですか?Scalaはより大きなデータセットに最適ですか?または、より小さなデータセットにも適していますか?
回答:
Scalaは小規模および大規模データの両方で機能しますが、その作成と開発は、スケーラブルなものが必要なために動機付けられています。 Scalaは「Scalable Language」の頭字語です。
Scalaはjvm上で実行される関数型プログラミング言語です。これの「機能的」部分は、プログラミングの考え方を変えさせる言語の根本的な違いです。そのような考え方が好きなら、小さなデータをすばやく操作できます。好むと好まざるとにかかわらず、関数型言語は根本的に簡単に大規模に拡張できます。jvmは基本的にどこにでもあり、したがってScalaコードは基本的にどこでも実行できるため、jvmピースも重要です。(jvmで記述された他の多くの言語と他の多くの関数型プログラミング言語があり、Scala以外の言語は両方のリストに表示されます。)
この講演では、Scalaの背後にある動機の概要を説明します。
先ほど述べたように、Spark(反復アルゴリズムのほうが対応するバッチ処理よりも優れた分散可能なバッチ処理)は大きなものです。Sparkには、機械学習用のライブラリMllibとグラフ用のGraphXが付属しています。Erik AllikとTris Nefzgerが述べたように、AkkaとFactorieが存在します。Playもあります。
一般に、掘り下げている特定のユースケースがあるかどうか(もしそうなら、それをあなたの質問の一部にします)、または単にビッグデータツールの調査が必要で、Scalaを少し知りたいと思います。そこから始めます。
ScalaNLPは、一般的な自然言語処理タスクをサポートする機械学習および数値計算ライブラリのスイートです。http://www.scalanlp.org/
これが、データサイエンス用のscalaライブラリの新しく更新されたリストです:https : //www.datasciencecentral.com/profiles/blogs/top-15-scala-libraries-for-data-science-in-2018-1
Scalaの作成者であるMartin Oderskyによるプレゼンテーションを聞くことから、オブジェクト指向と柔軟な構文と組み合わせて関数型プログラミング構造を活用することにより、非常にスケーラブルなシステムを構築するのに特に適しています。また、他のいくつかの言語よりもコードの行数が少なく、高速フィードバックのためのインタラクティブモードを備えているため、小規模システムの開発やラピッドプロトタイピングにも役立ちます。注目すべきScalaフレームワークの1つは、同時計算のアクターモデルを使用するAkkaです。Oderskyのプレゼンテーションの多くはYouTube上にあり、wiki.scala-lang.orgにScalaで実装されているツールのリストがあります。
暗黙のポイントは、Scalaで記述されたツールとフレームワークには、本質的にScala統合があり、通常はScala APIがあることです。Scalaはすでに統合されており、実際にはJavaに大きく依存しているため、Javaで始まる他の言語をサポートするために、他のAPIを追加できます。ツールまたはフレームワークがScalaで記述されていない場合、Scalaをサポートする可能性はほとんどありません。それが、ScalaとSparkで書かれたツールとフレームワークに向けたあなたの質問への答えがその一例である理由です。ただし、現在Scalaは市場でわずかなシェアを持っていますが、その採用率は成長しており、Sparkの高い成長率はそれを強化します。私がScalaを使用する理由は、SparkのScala APIがJavaおよびPython APIよりも豊富であるためです。
私が一般にScalaを好む主な理由は、オブジェクト指向のモジュール性を維持しながらオブジェクトおよび値としての機能の使用を許可および促進するため、Javaよりもはるかに表現力が高いためです。広範囲に使用され、明快で優れたドキュメントがあるため、私は好んでいました。