どのようにビッグデータのプログラミング言語を選択するには?R、PythonやJavaの?

ビッグデータ、それのプログラミング言語を選択する方法について簡単に説明し?I:まず、このような大きなデータのプロジェクトがあり、あなたは問題領域(problemdomainを)知っている、また、どのようなインフラ、さらにはこのすべてのデータを処理するために使用するフレームワークを決定する必要がありますが、作るの決定に遅れがあることを知っていますどの言語を選ぶのか?この問題は、あまりにも長い間延期しません(または多分よりターゲットを絞っ質問がある、私は私のすべての開発者およびデータ科学者を強制することができますすることはどのような言語?使用する必要があります)、遅かれ早かれを決定します。

ビッグデータのプログラミング言語を選択する方法

もちろん、何も防止あなたはビッグデータの作業を処理するために(たとえば、XSLT変換など)他のメカニズムを使用する必要がありました。R、Pythonとスカラ座を、プラスのJavaのビジネス社会に立ってきた。しかし、一般的に言えば、今3つの言語でのビッグデータの用語を選択することができます。だから、あなたはなぜ、それを選択した場合、またはそれを選択するには?どのような言語を選ぶのですか?

Rは、しばしばと呼ばれ、「開発統計に言語の統計。」あなたが計算するために使用される難解な統計モデルが必要な場合は、それがCRAN上で見つけることができる - あなたが知っている、CRANと呼ばれる包括的なRアーカイブ・ネットワーク(ComprehensiveRArchiveNetworkは)理由もなくはありません。分析のために言えばとプロット、何もggplot2に勝るものはありません。そして、あなたはR.でスパークを実行結合SparkRを使用することができます機能が提供する機能、より強力なマシンを使用したい場合

ただし、データ科学者でない場合は、以前のMatlab、SASまたはOCTAVEを使用していない、効率的なプロセスに使用するRへ順にいくつかの調整が必要な場合があります。Rは、一般的な使用の観点からデータを分析するのに適した、非常に良いではありませんが。運がよければ、あなたはそれをデバッグすることができます(あなたがトランキング制御システムでは、このような言語を使用する可能性が低い、あなたはRでモデルを構築することができますが、Scalaの、またはPythonのにモデルを変換考慮する必要があり、生産環境のために使用することができます)。

 

よりエキサイティングなコンテンツを学び、学ぶために私をポイントしてください

あなたのデータ科学者はRを使用しない場合、彼らは、Pythonを十分に理解している可能性があります。10年以上、Pythonは特に自然言語処理(NLP)および他の分野では、学界の間で非常に人気となっています。あなたがNLPプロジェクトに対処する必要性を持っている場合はこのように、それはモデリングGenSimのテーマ、または超高速、正確なスペイシーを使用して、古典的なNTLKなど、もう少し眩しくオプションの数に直面するだろう。それは、ニューラルネットワーク、Pythonの同じやすさ、そしてそこTheano Tensorflowに来るとき同様、;その後、データ分析のためのscikit-学び、numpyのとパンダを学ぶためのマシンがあります。

そこJuypter / iPython--このWebベースのノートPC・サーバ・フレームワークを使用すると、1つの共有可能なログフォーマット、コード、グラフィックス、および事実上任意のオブジェクト混在一緒に使用することができます。読み - - 出力 - これはキラーの1のPythonの特徴が、今年は、リードを追求する中で登場することをコンセプトのこの証明の偉大な使用されているループ(REPL)コンセプトスカラ座など、ほぼすべての言語、およびR.

Pythonは、多くの場合、大規模なデータ処理フレームワークでサポートされていますが、同時に、それは多くの場合ではありません「ファーストクラスの市民は。」スパークの新機能は、ほとんど常にスカラ座/ Javaバインディングの上部に表示されますたとえば、あなたが(特にSparkStreaming / MLLibの側面が懸念している開発ツール上の)これらの更新バージョンをリリースするいくつかのマイナーなためPySpark書き込みを使用する必要があります。

Rとは対照的に、ほとんどの開発者はそれらを使用することは非常に便利になりますので、Pythonは、伝統的なオブジェクト指向言語ですが、最初の接触またはR Scalaは怖いです。小さな問題は、あなたのコードの必要性が右マージンを残していることです。この意志のスタッフは、2つの陣営に分かれて、一つのグループは、「これは読みやすさを確保するために非常に有用である」と考え、場違い文字があるので、2016年までに、私たちはコードの行を必要としないはず、だと思う人は、解釈を強制する必要がありますプログラムの起動および実行ができます。

スカラ

今スカラについて話:我々はすべてのタイプのシステムに感心するので、本論文で4つの言語では、Scalaは、最も簡単な言語です。ScalaはJVM上で動作し、基本的には成功した機能とオブジェクト指向のパラダイムパラダイムを組み合わせ、金融セクターや企業での大量のデータを処理するために必要としている今、それが作られた大きな進歩は、多くの場合に対処する方法を大規模分散を使用しています(例えば、TwitterやLinkedInの)。また、スパークやカフカの言語を駆動しています。

ScalaはJVM内で実行されているので、それは自由にすぐにJavaのエコシステムにアクセスすることができますが、それはまた、大規模なデータを扱うための「ネイティブ」ライブラリー(特にツイッターAlgebirdとSummingbird)の広い範囲を持っています。また、非常に簡単なことばかりPythonとRのように、対話型の開発と分析のために、REPLを使用することを含んでいます。

私個人的にはScalaのような、それはパターンマッチング等の多くの有用なプログラミング機能を、含まれており、標準のJavaよりもはるかに簡単であると考えられているからです。しかし、特性として、この言語を促進するために複数の方法を開発するためのScalaを使用。これは良い事ですが、それは完全なチューリング(チューリング完全)システムとオペレータの巻線の様々な種類があることを考慮すると(「/: 『foldLeftを代表して、』:「foldRightに代わって)!、それはScalaのファイルを開くことは容易です、私はあなたがPerlコードの特定の嫌いであることがわかりだと思います。これは、スカラ(Databricksの非常に合理的)を書くときに従うのは良いプラクティスとガイドラインのセットが必要です。

もう一つの欠点はつまり、Scalaのコンパイラは、前者のように思わせる、少し遅い走る「コンピレーション!」日。私はそれは多くの小さな問題や許さだと思うので、しかし、それは、このフォームREPL、ラップトップを使用してビッグデータだけでなく、Webベースのフレームワークをサポートするために、ツェッペリンJupyterを持っています。

よりエキサイティングなコンテンツを学び、学ぶために私をポイントしてください

ジャワ

すべて完全に時代遅れ:最後に、唯一のリターンでスーGoogleがなされるべきお金だった場合、放棄され愛され、常に最終的Java--言語は、その会社(オラクル注)を気にするようです。唯一のビジネスコミュニティはJavaだけを使用ドローン!しかし、Javaはあなたのビッグデータプロジェクトに適しているかもしれません。HadoopMapReduceが、それはJavaで書かれていると思います。HDFSは?また、Javaで書かれたこと。でも嵐は、カフカとスパークは、実行することができます(使用のClojureとScalaの)JVM上で、Javaがこれらのプロジェクトであるであることを意味し、「第一級の市民。」彼らは唯一のJavaをサポートし、最近までこれらの新技術は、GoogleCloudDataflow(今ApacheBeam)のようにもあります。

Javaはずっと愛さロックスター好みの言語ではないかもしれません。しかし、あなたはライブラリのエンタープライズセキュリティと相互運用性を確保するために、アナライザ、デバッガ、および監視ツールなど、巨大なエコシステムを(アクセスできるように、Javaを使用してアプリケーションNode.jsのコールバックを整理しようとしているのR&D人材のために)、およびはるかに加えて、過去20年間での内容のほとんどは(残念ながら、21歳でのJavaの到来を告げるが、私たちは老人です)証明されています。

ジャワの砲撃のための主な理由の一つは、非常に面倒、長いあり、かつ必要な対話型の開発REPLの欠如は(R、PythonとScalaは持っています)。私は10行がすぐにJavaで書かれたコードのコード200行のScalaのベーススパーク変態だけでなく、画面スペースの大部分を占める大規模な型宣言文、となって見てきました。しかし、Java8は、新しいラムダのサポート状況を改善するための長い道のりを行きます。JavaはJava8は確かにJavaはそれほど苦痛ではないと発展させることはありませんScalaのようにそれほどコンパクトで、しかし。

私はそれをする必要があります怖い?そのビッグデータ・プロジェクトのためにどのような言語使用しない「場合に応じて、。」あなたがあいまいな統計処理の重いデータ解析を行う場合は、R奇妙を支持しません。あなたはGPUの集中NLPやニューラルネットワーク処理を渡る場合には、Pythonは良い選択です。本番環境用のデータ・フロー・ソリューションの強化をしたい、だけでなく、すべての重要な運用ツールを持っている場合は、JavaやScalaは確かに良い選択です。

もちろん、必ずしもどちらか一方。あなたはスパークを使用する場合たとえば、あなたは電車のモデルと機械学習のパイプライン(パイプライン)にRやPythonを使用して、静的データを利用することができ、その後、シーケンス処理パイプラインは、それはあなたの生産に使用することができるストレージシステム、中に注ぎ、 ScalaSparkStreamingアプリケーション。あなたも、言語の特定の種類にとらわれすべきではない(あるいはあなたのチームはすぐに疲労言語が生成されます)が、セットは異質の言語で自分の役割を果たして使用すると、結果をもたらす大規模なデータ・プロジェクトを与える可能性があります。

よりエキサイティングなコンテンツを学び、学ぶために私をポイントしてください

公開された38元の記事 ウォン称賛27 ビュー40000 +

おすすめ

転載: blog.csdn.net/HAOXUAN168/article/details/104101960