機械学習の実践: Spark と Python を組み合わせるには?

機械学習の実践: Spark と Python を組み合わせるには?

Apache Sparkはビッグデータの処理や活用に最も広く使われているフレームワークの一つであり、Pythonはデータ分析や機械学習などの分野で最も広く使われているプログラミング言語の一つです。より強力な機械学習機能を手に入れたいなら、Spark と Python を一緒に使ってみてはいかがでしょうか?

海外では、Apache Spark 開発者の平均年収は 11 万ドルです。この業界で Spark が広く使用されていることは間違いありません。 Python は、豊富なライブラリを備えているため、ほとんどのデータ サイエンティストや分析の専門家にも使用されています。両者の統合はそれほど難しくありません。Spark は、Java に非常によく似た言語である Scala で開発されています。 Spark ビッグデータ処理用にプログラム コードを JVM バイトコードにコンパイルします。 Spark と Python を統合するために、Apache Spark コミュニティは PySpark をリリースしました。

Apache Spark は、Apache Software Foundation によって開発された、リアルタイム処理用のオープン ソース クラスター コンピューティング フレームワークです。 Spark は、暗黙的なデータ並列性とフォールト トレランスを備えたクラスター全体をプログラミングするためのインターフェイスを提供します。

他のフレームワークに比べて優れている Apache Spark の機能をいくつか紹介します。

  • 速度: 従来の大規模データ処理フレームワークよりも 100 倍高速です。
  • 強力なキャッシュ: シンプルなプログラミング レイヤーにより、強力なキャッシュ機能とディスク永続化機能が提供されます。
  • デプロイメント: Mesos、Yarn、または Spark 独自のクラスター マネージャーを介してデプロイできます。
  • リアルタイム: インメモリ コンピューティング、リアルタイム コンピューティング、低レイテンシ。
  • ポリグロット: Scala、Java、Python、R でプログラミングできるため、これはこのフレームワークの最も重要な機能の 1 つです。

Spark は Scala で設計されており、Python よりも 10 倍高速ですが、Scala の速度の利点は、使用されるコアの数が少ない場合にのみ現れます。最近のほとんどの分析と処理には多数のコアが必要なので、Scala のパフォーマンス上の利点はそれほど大きくありません。

プログラマーにとって、Python は豊富な構文と標準ライブラリを備えているため、比較的簡単に学習できます。さらに、RDD は動的型付け言語であるため、複数のタイプのオブジェクトを保持できます。

Scala には SparkMLlib がありますが、機械学習や NLP を実装するためのライブラリやツールが十分にありません。さらに、Scala にはデータの視覚化機能が欠けています。

[[233829]]

Python で Spark を設定する (PySpark)

まず、Sparkをダウンロードしてインストールする必要があります。Sparkファイルを抽出し、インストールして.bashrcファイルパスに追加したら、source .bashrcと入力する必要があります。

PySparkシェルを開くには、コマンド./bin/pysparkを入力します。

PySpark SparkContext とデータフロー

Python で Spark に接続するには、RD4s を使用し、ライブラリ Py4j を使用できます。 PySpark Shell は、Python API を Spark Core にリンクし、Spark コンテキストを初期化します。 SparkContext は Spark アプリケーションの中核です。

  1. Spark Context は内部サービスをセットアップし、Spark 実行環境への接続を確立します。
  2. ドライバー プログラム内の Spark Context オブジェクトは、すべての分散プロセスを調整し、リソースの割り当てを可能にします。
  3. クラスター マネージャー エグゼキューターは、ロジックを持つ JVM プロセスです。
  4. Spark Context オブジェクトは、アプリケーションをエグゼキューターに送信します。
  5. Spark Context は各エグゼキュータでタスクを実行します。

PySpark KDD ユースケース

ここで、ユースケースを見てみましょう。データ ソースは KDD'99 Cup (国際知識発見およびデータ マイニング ツール コンペティション。中国には Zhihu など、同様のコンペティションのオープン データ セットがあります) です。元のデータセットが大きすぎるため、ここではデータセットの一部を取り出します。

RDD を作成する:

これで、このファイルを使用して RDD を作成できます。

フィルター

データセット内の通常の相互作用の数を数えたいとします。次のようにして raw_data RDD をフィルタリングできます。

カウント:

これで、新しい RDD に含まれる要素の数を数えることができます。

出力:

マッピング:

この場合、データファイルを CSV 形式のファイルとして読み取ります。これは、RDD 内の各要素にラムダ関数を適用することで実現できます。以下に示すように、ここでは map() および take() 変換を使用します。

出力:

スプリット:

ここで、RDD 内の各要素をキーと値のペアとして使用します。キーはタグ (通常の値など) で、値は CSV 形式ファイルの行を表す要素のリスト全体です。 これは、line.split() と map() を使用して次のように実行できます。

出力:

集める:

collect() アクションを使用して、RDD のすべての要素をメモリに保存します。したがって、大きな RDD を使用する場合は注意が必要です。

出力:

もちろん、これはこれまでのどの操作よりも時間がかかりました。 RDD の一部を持つ各 Spark ワーカー ノードは、その部分を取得してすべてをまとめるために調整する必要があります。

これまでのすべてを結び付ける最後の例として、通常のやり取りをすべてキーと値のペアとして収集します。

出力:

<<:  人工知能の進化の限界は肉体にある

>>:  人間の生理学的パラメータのモニタリング分野に焦点を当て、Pulse Geekはウェアラブルでこの分野に参入し、AIを活用して心臓の守護者となる

推薦する

優れた機械学習論文を書くにはどうすればいいでしょうか?

[[417825]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitA...

あなたのビジネスに最適なRPAコンサルタントを見つける方法

RPA 導入を成功させるために、この記事では、ビジネスに最適な RPA コンサルタントを選択するプロ...

AIの新たな方向性:敵対的攻撃

[[249559]]近年のAI分野を調査していく中で、近年、世界中の研究者の視野の中に敵対的攻撃とい...

人工知能は、優秀な人材が良い就職機会を見つけるのにどのように役立つのでしょうか?

人工知能は、大企業が従業員を管理する方法に大きな影響を与えています。 [[360624]]世界経済は...

Apache IoTDB: 産業用 IoT シナリオに適した新しいデータベース。保存、クエリ、使用はもはや問題ではありません。

インダストリー4.0の時代に入り、デジタル化と自動化の導入により生産環境はより効率的になりました。同...

Java ソートアルゴリズムの概要 (II): 選択ソート

選択ソートの基本的な操作は、ソートするデータ要素から毎回最小(または最大)の要素を選択し、ソートする...

...

高齢化社会に積極的に対応、サービスロボットがトレンドを活用

統計によると、2021年には65歳以上の高齢者人口が2億人を超え、総人口の14.2%を占める。家庭用...

コンピューターにビデオの字幕を認識させる

馬文華氏は、中国科学院自動化研究所でパターン認識と人工知能の博士号を取得しました。主に画像認識、ター...

新しいインフラの推進により、人工知能の応用は新たな段階に入る

レポート概要新しいインフラストラクチャにより人工知能アプリケーションの実装が加速COVID-19パン...

大量データのための2次パーソナルコネクションマイニングアルゴリズム(Hadoop実装)

私は最近、Sina Weibo の「あなたに興味があるかもしれない人々」の間接的なフォローアップ推奨...

...

Vision Pro が 50 億ドルで売却され、ザッカーバーグは大喜び! Metaは500億ドルを燃やし、VR復活の希望がここにある

海外メディアの報道によると、2月2日の正式発売前に、AppleのVision Proはすでに20万台...

人工知能認識により、物流会社はダブルイレブンの注文に簡単に対応できます。

2018年のダブルイレブンは、「富豪」に対する私の認識を新たにしました。その前に、アリババの張勇は...

...