ビッグデータの分野では、数十億ものイベントの中で、たった1ミリセコンドの損失が重大な影響を与える。それにもかかわらず、Pythonのような遅いと考えられている言語が、この1年で非常に人気が出ている。ビッグデータコミュニティの最近の記事や議論では、データサイエンスとビッグデータのプログラミング言語の選択について、論争を始めている。
AdRollの主席エンジニアであるVille Tuulos氏によると、言語のパフォーマンスそのものは問題ではない。Ville氏の調査結果は、2013年9月にサンフランシスコで開催されたミートアップで発表され、Pythonで構築されたAdRollのバックエンドスタックと、AmazonのRedshiftのような巨大なシステムよりも優れたパフォーマンスをどのように発揮できるかを示した。ここで重要なのは、AdRollは、自分たち特有のユースケースに基づき、システムを構築していることだ。そのため、その1つのユースケースのために最適化できる。Ville氏は次のように述べた。
どの言語を使うかに関わらず、ハイレベルな言語を使い、一般的なソリューションよりも優れている、ドメイン特化言語のソリューションを実装できます。
これは、言語がまったく関係ないという意味ではない。データサイエンスやビッグデータにはどの言語が最適かについて、最近、数多くの議論が行われている。何度も議論されているのは、PythonやRだ。データサイエンス戦争について話す人もいる。LinkedInのトピックでは、興味深い議論が始められ、全般的な意見では、Rは学問的な言語であり、データサイエンティストにとっては、大量のパッケージとその多様性によって、Rがより優れたものになっている。
しかし、すべてを考慮すると、Pythonのほうがプログラマたちの心に訴えかけるものがあり、大量のデータを扱う場合について、Dish Networkのデータサイエンティスト、Tom Rampley氏は以下のように述べている。
私は、様々なパッケージの統計的機能を利用するため、広範囲に渡ってRを利用します。また、小さなデータセットの操作にもRを使います。しかし、テキストのパースや大規模データセットの操作、自分のアルゴリズムをコーディングする場合は、Numpy、Scipy、Pandasのパッケージと組み合わせて、Pythonを使うほうがずっと良いと思います。
ここ数か月は、Pythonが勝者になっているようだ。Karissa McKelvey氏は、2013年10月に「私のデータは大きく、Rではロードできない」というブログを書いているし、Matt Asay氏は、「Rはデータサイエンスの博士号を持つ人たちには人気があるが、データが主流になるにつれて、Pythonが優位になっている」と述べた。
複雑なアーキテクチャの中でどの言語を使うか決める時、その言語のパフォーマンスは重要な要素になる。そして、このことは、誇張されがちだ。本当に大切なのは、その言語をどう使うかであり、Linus Torvalds氏は次のように述べている。「悪いプログラマはコードに悩む。良いプログラマはデータ構造とその関係性に悩む。」
Clouderaの最近のオープンソースプロジェクトであるImpalaを例に見てみよう。Impalaは、クエリを劇的に速く実行するために、Hiveから置き換えるように提案されている。残りのHadoopスタックはJavaで書かれているが、ImpalaはC++で書くことを選んだ。この変更の理由は、しばしばパフォーマンスのためだと言われている。しかし、パフォーマンスの向上は、単にJavaからC++への切り替えのためだけではない。Impalaは、MapReduceを使わずに、データをメモリにキャッシュする。異なるデータ構造と制限を持った、完全に別のパラダイムを使うため、初めからパフォーマンスが良いのは明らかなのだ。JavaからC++に切り替えられたのは、さらに先を行くために素晴らしいことではあるが、パフォーマンス向上の大きな要因ではないだろう。