Pythonを使用したSparkの概要–初心者向けのPySpark



Apache Sparkはビッグデータと分析の世界を引き継ぎ、Pythonは今日の業界で最もアクセスしやすいプログラミング言語の1つです。したがって、このブログでは、両方の世界を最大限に活用するためのPyspark(Pythonを使用したSpark)について学習します。

ビッグデータの処理と操作に関して最も広く使用されているフレームワークの1つであり、 Python は、データ分析、機械学習などで最も広く使用されているプログラミング言語の1つです。だから、一緒に使ってみませんか?ここが PythonでSpark としても知られている PySpark 入ってくるインクルード画像。

Apache Spark開発者の平均給与は1万ドルで、Sparkが業界で多く使用されていることは間違いありません。のためその豊富なライブラリセット、Pythonはによって使用されますインクルード今日のデータサイエンティストと分析の専門家の大多数。 PythonとSparkの統合は、コミュニティへの大きな贈り物でした。 Sparkは、Javaと非常によく似たScala言語で開発されました。プログラムコードをJVMのバイトコードにコンパイルしてスパークビッグデータ処理を行います。 PythonでSparkをサポートするために、ApacheSparkコミュニティはPySparkをリリースしました。それ以来、 これらの両方の長所を組み合わせた後に得られる幅広いメリットにより、業界全体で最も求められているスキルの1つとして知られています。このSparkwith Pythonブログでは、次のトピックについて説明します。





ApacheSparkの紹介

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



以下は、他のフレームワークよりも優れているApacheSparkの機能の一部です。

Sparkの機能-Sparkwith Python-Edureka

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

なぜPythonを使うのですか?

Sparkはscalaで設計されましたが、Pythonよりもほぼ10倍高速になりますが、Scalaは 使用されているコアの数が少ない 。最近の分析とプロセスのほとんどは多数のコアを必要とするため、Scalaのパフォーマンス上の利点はそれほど多くありません。



プログラマーにとってPythonは 比較的簡単 学ぶために その構文と標準ライブラリのため。さらに、それは 動的に型付けされた言語、 つまり、RDDは複数のタイプのオブジェクトを保持できます。

Scalaには SparkMLlib ありません 機械学習とNLPに十分なライブラリとツール 目的。さらに、Scalaにはデータの視覚化がありません。

PySparkトレーニング| Pythonを使用したApacheSpark |エドゥレカ

新しいアップデートを入手するには、YouTubeチャンネルに登録してください。

PythonでSparkをセットアップする(PySpark)

私はあなたたちが方法を知っていることを願っています 。だから、一度あなたが 解凍 スパークファイル、 インストール済み それとそのパスを追加しました .bashrc ファイル、入力する必要がありますソース.bashrc

export SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 export PATH = $ PATH:/usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin

pysparkシェルを開くには、コマンドを入力する必要があります./bin/pyspark

業界の火花

Apache Sparkは、次のようなすばらしい機能を備えているためです。 インメモリ処理ポリグロット そして 高速処理 さまざまな業界でさまざまな目的のために世界中の多くの企業によって使用されています。

Yahoo Apache Sparkを機械学習機能に使用して、ニュース、Webページをパーソナライズし、ターゲット広告にも使用します。彼らはPythonでSparkを使用して、ニュースの種類を調べます。ユーザーはニュース記事を読み、分類して、ニュースの各カテゴリを読むことに興味があるユーザーの種類を見つけます。

トリップアドバイザー Apache Sparkを使用して、何百ものWebサイトを比較し、顧客に最適なホテルの価格を見つけることで、何百万もの旅行者にアドバイスを提供します。ホテルのレビューを読みやすい形式で読んで処理するのにかかる時間は、ApacheSparkの助けを借りて行われます。

世界最大のeコマースプラットフォームの1つ アリババ eコマースプラットフォームで数百ペタバイトのデータを分析するために、世界最大のApacheSparkジョブのいくつかを実行します。

PySparkSparkContextとデータフロー

PythonでのSparkについて言えば、RDDでの作業はライブラリPy4jによって可能になります。 PySpark Shellは、Python APIをSparkコアにリンクし、Sparkコンテキストを初期化します。 Sparkコンテキスト Sparkアプリケーションの心臓部です。

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

PySparkKDDのユースケース

それでは、のユースケースを見てみましょう。 KDD'99カップ (国際知識発見およびデータマイニングツールコンペティション)。元のデータセットが大きすぎるため、ここではデータセットの一部を取得します

import urllib f = urllib.urlretrieve( 'http://kdd.ics.uci.edu/databases/kddcup99/kddcup.data_10_percent.gz'、'kddcup.data_10_percent.gz')

RDDの作成:
これで、このファイルを使用して RDDを作成する

data_file = '。/ kddcup.data_10_percent.gz' raw_data = sc.textFile(data_file)

フィルタリング:

正常な数を数えたいとします。データセット内の相互作用。我々はできる フィルタ raw_dataRDDは次のとおりです。

normal_raw_data = raw_data.filter(lambda x: 'normal。'inx)

カウント:

今、私たちはできます カウント 新しいRDDに含まれる要素の数。

from time import time t0 = time()normal_count = normal_raw_data.count()tt = time()-t0 print '{}'通常の '相互作用があります' .format(normal_count)print 'カウントは{}秒で完了しました' .format (round(tt、3))

出力:

97278の「通常の」インタラクションがありますカウントは5.951秒で完了しました

マッピング:

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

javaforループプログラムの例
from pprint import pprint csv_data = raw_data.map(lambda x:x.split( '、'))t0 = time()head_rows = csv_data.take(5)tt = time()-t0 print '解析は{}秒で完了しました'.format(round(tt、3))pprint(head_rows [0])

出力:

解析は1.715秒で完了しました[u'0 '、u'tcp'、u'http '、u'SF'、u'181 '、u'5450'、u'0 '、u'0' 、。 。 u '通常。']

分割:

ここで、RDDの各要素を、キーがタグであるキーと値のペアとして設定します(例: 正常 )および値は、CSV形式のファイルの行を表す要素のリスト全体です。次のように進めることができます。ここでは、 line.split()およびmap()。

def parse_interaction(line):elems = line.split( '、')tag = elems [41] return(tag、elems)key_csv_data = raw_data.map(parse_interaction)head_rows = key_csv_data.take(5)pprint(head_rows [0] )
 出力: (u'normal。 '、[u'0'、u'tcp '、u'http'、u'SF '、u'181'、u'5450 '、u'0'、u'0 '、u' 0.00 '、u'1.00'、.... U '通常。'])

収集行動:

ここでは、collect()アクションを使用します。 RDDのすべての要素をメモリに取り込みます。このため、大規模なRDDを使用する場合は注意して使用する必要があります。

t0 = time()all_raw_data = raw_data.collect()tt = time()-t0 print '{}秒で収集されたデータ' .format(round(tt、3))

出力:

17.927秒で収集されたデータ

もちろん、これまでに使用した他のアクションよりも時間がかかりました。 RDDのフラグメントを持つすべてのSparkワーカーノードは、その部分を取得してすべてをまとめて削減するために調整する必要があります。

前のすべてを組み合わせた最後の例として、すべてを収集したいと思います正常キーと値のペアとしての相互作用。

#ファイルからデータを取得data_file = '。/ kddcup.data_10_percent.gz' raw_data = sc.textFile(data_file)#キーと値のペアに解析key_csv_data = raw_data.map(parse_interaction)#通常のキーの相互作用をフィルタリングnormal_key_interactions = key_csv_data.filter( lambda x:x [0] == 'normal。')#すべてを収集t0 = time()all_normal = normal_key_interactions.collect()tt = time()-t0 normal_count = len(all_normal)print '{}秒で収集されたデータ'.format(round(tt、3))print' {} '通常の'相互作用があります '.format(normal_count)

出力:

12.485秒で収集されたデータ97278の通常の相互作用があります

だから、これだ、みんな!

このSparkwithPythonブログを楽しんでいただけたでしょうか。これを読んでいるなら、おめでとうございます!あなたはもはやPySparkの初心者ではありません。今すぐシステムでこの簡単な例を試してください

PySparkの基本を理解したので、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。エドゥレカの PySparkを使用したPythonSpark認定トレーニング Pythonを使用してSpark開発者を成功させるために必要な知識とスキルを提供し、ClouderaHadoopおよびSparkDeveloper認定試験(CCA175)の準備をするように設計されています。

質問がありますか?コメント欄にご記入ください。折り返しご連絡いたします。