PySparkチュートリアル–Pythonを使用してApacheSparkを学ぶ



PySparkチュートリアルに関するこのブログでは、Pythonプログラミング言語を使用してApacheSparkを操作するために使用されるPSparkAPIについて学習します。

このような驚くべき速度でデータが生成されている世界では、正しい時間にそのデータを正しく分析することは非常に役立ちます。ビッグデータをリアルタイムで処理して分析を実行するための最も驚くべきフレームワークの1つは、ApacheSparkです。一緒、 またはPySparkは最も人気のある認定コースの1つであり、Scala forSparkにそのお金をかけさせます。だからこれで PySparkチュートリアル ブログでは、次のトピックについて説明します。





PySparkチュートリアル:PySparkとは何ですか?

Apache Sparkは、ビッグデータの処理、クエリ、分析に使用される高速クラスターコンピューティングフレームワークです。インメモリ計算に基づいているため、他のいくつかのビッグデータフレームワークよりも優れています。

PySparkの機能-PySparkチュートリアル-Edureka



もともとScalaプログラミング言語で書かれたオープンソースコミュニティは、ApacheSpark用のPythonをサポートする素晴らしいツールを開発しました。 PySparkは、データサイエンティストがライブラリを介してApacheSparkおよびPythonのRDDとインターフェイスするのを支援します Py4j。 PySparkを他のフレームワークよりも優れたフレームワークにする多くの機能があります。

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

PySparkチュートリアルブログを進めて、Sparkが業界でどこで使用されているかを見てみましょう。

業界のPySpark

すべての業界はビッグデータを中心に展開しており、ビッグデータがある場合は分析が含まれます。それでは、ApacheSparkが使用されているさまざまな業界を見てみましょう。



ハーフ オンラインストリーミングに向けて成長している最大の業界の1つです。 Netflix リアルタイムストリーム処理にApacheSparkを使用して、パーソナライズされたオンライン推奨を顧客に提供します。処理します 4,500億 サーバー側アプリケーションに流れる1日あたりのイベント。

ファイナンス ApacheSparkのリアルタイム処理が重要な役割を果たすもう1つのセクターです。銀行はSparkを使用してソーシャルメディアプロファイルにアクセスして分析し、次のような正しいビジネス上の意思決定を行うのに役立つ洞察を得ています。 信用リスク評価 、ターゲット広告と顧客セグメンテーション。 顧客離れ Sparkを使用しても削減されます。 不正検出 Sparkが関与する機械学習で最も広く使用されている分野の1つです。

健康管理 プロバイダーはApacheSparkを使用して 患者の記録を分析する 過去の臨床データとともに、診療所から退院した後に健康上の問題に直面する可能性が高い患者を特定します。 ApacheSparkはで使用されています ゲノム配列決定 ゲノムデータの処理に必要な時間を短縮します。

小売およびEコマース は、分析とターゲット広告を使用せずに実行されているとは想像できない業界です。今日最大のEコマースプラットフォームの1つ アリババ ペタバイトのデータを分析するために、世界最大のSparkジョブのいくつかを実行します。アリババは実行します 特徴抽出 画像データで。 eBay ApacheSparkを使用して提供します ターゲットを絞ったオファー 、顧客体験を向上させ、全体的なパフォーマンスを最適化します。

Javaのソケットとは何ですか

トラベル 業界でもApacheSparkを使用しています。 トリップアドバイザー 、ユーザーが完璧な旅行を計画するのに役立つ主要な旅行ウェブサイトは、ApacheSparkを使用してそのスピードを上げています パーソナライズされた顧客の推奨事項 .TripAdvisorは、Apache Sparkを使用して、何百万人もの旅行者にアドバイスを提供します。 何百ものウェブサイトを比較する その顧客のための最高のホテルの価格を見つけるために。

このPySparkチュートリアルの重要な側面は、Pythonを使用する必要がある理由を理解することです。なぜJava、Scala、Rではないのですか?

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


なぜPythonを使うのですか?

習得が容易: プログラマーにとって、Pythonは構文と標準ライブラリーがあるため、比較的簡単に習得できます。さらに、動的に型指定された言語であるため、RDDは複数の型のオブジェクトを保持できます。

膨大な数のライブラリ: Scalaには、機械学習や自然言語処理のためのPythonのような十分なデータサイエンスツールやライブラリがありません。さらに、Scalaには優れた視覚化とローカルデータ変換が欠けています。

巨大なコミュニティサポート: Pythonには、何千もの仮想および物理的な場所でオンラインとオフラインでやり取りする何百万もの開発者がいるグローバルコミュニティがあります。

このPySparkチュートリアルの最も重要なトピックの1つは、RDDの使用です。 RDDとは何かを理解しましょう

SparkRDD

反復分散コンピューティング、つまり計算で複数のジョブにわたってデータを処理する場合、複数のジョブ間でデータを再利用または共有する必要があります。 Hadoopのような初期のフレームワークでは、次のような複数の操作/ジョブを処理するときに問題が発生しました。

  • HDFSなどの中間ストレージへのデータの保存
  • 複数のI / Oジョブがあると、計算が遅くなります
  • レプリケーションとシリアル化により、プロセスがさらに遅くなります

RDDは、フォールトトレラントな分散インメモリ計算を有効にすることで、すべての問題を解決しようとします。 RDDはの略です 復元力のある分散データセット。 RDDは分散メモリの抽象化であり、プログラマはフォールトトレラントな方法で大規模なクラスタに対してメモリ内の計算を実行できます。彼らは オブジェクトの読み取り専用コレクション パーティションが失われた場合に再構築できる一連のマシンにパーティション化されています。 RDDで実行される操作はいくつかあります。

  • 変換: 変換により、既存のデータセットから新しいデータセットが作成されます。遅延評価
  • 行動: Sparkは、アクションがRDDで呼び出された場合にのみ、計算を強制的に実行します。

いくつかの変換、アクション、および機能を理解しましょう

ファイルの読み取りと上位n個の要素の表示:

rdd = sc.textFile( 'file:/// home / edureka / Desktop / Sample')rdd.take(n)

出力:

[u '森林破壊は、今や強力な悪魔以上の形をとっている主要な環境的および社会的問題として生じています。 '、u'森林破壊によって生じた問題の原因、影響、および解決方法について知る必要があります。 '、u'私たちは、子供たちが問題に気づき、学校内または学校外でのエッセイ作成コンテストに参加できるように、森林破壊に関する多くの段落、長短のエッセイを提供しました。 '、u'クラスの基準に従って、以下に示す任意の森林伐採エッセイを選択できます。 '、u'森林破壊は、社会と環境に対する主要な地球規模の問題として生じています。 ']

小文字への変換と分割:(小文字と分割)

def Func(lines):lines = lines.lower()lines = lines.split()return lines rdd1 = rdd.map(Func)rdd1.take(5)

出力:

[[u'deforestation '、u'is'、u'arising '、u'as'、u'the '、u'main'、u'environmental '、u' and '、u'social'、u'issue '、u' which '、u' has '、u'now'、u'taken '、......。 。 。 ]

StopWordsの削除:(フィルター)

stop_words = ['a'、 'all'、 'the'、 'as'、 'is'、 'am'、 'an'、 'and'、 'be'、 'been'、 'from'、 'had' 、 'I'、 'I'd'、 'why'、 'with'] rdd2 = rdd1.filter(lambda z:z not in stop_words)rdd2.take(10)

出力:

[u '森林破壊'、u '発生'、u 'メイン'、u '環境'、u '社会'、u '問題'、u 'これ'、u '持っている'、u '今'、u '取られた' ]

1から500までの数値の合計:(削減)

sum_rdd = sc.parallelize(range(1,500))sum_rdd.reduce(lambda x、y:x + y)

出力

124750

PySparkによる機械学習

PySparkチュートリアルブログを続けて、BasketBallデータを分析し、将来の予測を行いましょう。それで、ここでは、NBAのすべての選手のバスケットボールデータを使用します。 1980年 【3ポインター導入年】。

データの読み込み:

df = spark.read.option( 'header'、 'true').option( 'inferSchema'、 'true').csv( 'file:///home/edureka/Downloads/season_totals.csv')

列の印刷:

print(df.columns)

出力:

['_c0'、 'player'、 'pos'、 'age'、 'team_id'、 'g'、 'gs'、 'mp'、 'fg'、 'fga'、 'fg_pct'、 'fg3'、 ' fg3a '、' fg3_pct '、' fg2 '、' fg2a '、' fg2_pct '、' efg_pct '、' ft '、' fta '、' ft_pct '、' orb '、' drb '、' trb '、' ast ' 、 'stl'、 'blk'、 'tov'、 'pf'、 'pts'、 'yr']

Players(OrderBy)とtoPandasの並べ替え:

ここでは、シーズンで獲得したポイントに基づいてプレーヤーを並べ替えています。

df.orderBy( '​​pts'、ascending = False).limit(10).toPandas()[['yr'、 'player'、 'age'、 'pts'、 'fg3']]

出力:

DSLとmatplotlibの使用:

セレンWebドライバーでのクロスブラウザーテスト

ここでは、の平均数を分析しています 3ポイントの試み 制限時間内の各シーズン 36分 [十分な休息をとったおおよその完全なNBAゲームに対応する間隔]。スリーポイントフィールドゴールの試行回数(fg3a)とプレイ時間(mp)を使用してこのメ​​トリックを計算し、次を使用して結果をプロットします。 matlplotlib

from pyspark.sql.functions import col fga_py = df.groupBy( '​​yr')。agg({'mp': 'sum'、 'fg3a': 'sum'})。select(col( 'yr')、( 36 * col( 'sum(fg3a)')/ col( 'sum(mp)'))。alias( 'fg3a_p36m'))。orderBy( '​​yr')from matplotlib import pyplot as plt import seaborn as sns plt.style .use( 'fivethirtyeight')_ df = fga_py.toPandas()plt.plot(_df.yr、_df.fg3a_p36m、color = '#CD5C5C')plt.xlabel( 'Year')_ = plt.title( 'プレーヤー平均3ポイント試行(36分あたり) ')plt.annotate(' 3ポインタが導入されました '、xy =(1980、.5)、xytext =(1981、1.1)、fontsize = 9、arrowprops = dict(facecolor =' grey '、shrink = 0、linewidth = 2))plt.annotate(' NBAは3ポイントラインで移動しました '、xy =(1996、2.4)、xytext =(1991.5、2.7)、fontsize = 9、arrowprops = dict(facecolor = '灰色'、縮小= 0、線幅= 2))plt.annotate( 'NBAが3点線に戻りました'、xy =(1998、2。)、xytext =(1998.5、2.4)、fontsize = 9、arrowprops = dict(facecolor = 'grey'、shrink = 0、linewidth = 2))

出力:

線形回帰とVectorAssembler:

この曲線に線形回帰モデルを当てはめて、今後5年間のショットの試行回数をモデル化できます。 VectorAssembler関数を使用してデータを単一の列に変換する必要があります。これは 要件 MLlibの線形回帰APIの場合。

from pyspark.ml.feature import VectorAssembler t = VectorAssembler(inputCols = ['yr']、outputCol = 'features')training = t.transform(fga_py).withColumn( 'yr'、fga_py.yr).withColumn( 'label '、fga_py.fg3a_p36m)training.toPandas()。head()

出力:

建物モデル:

次に、変換されたデータを使用して線形回帰モデルオブジェクトを構築します。

from pyspark.ml.regression import LinearRegression lr = LinearRegression(maxIter = 10)model = lr.fit(training)

トレーニング済みモデルのデータセットへの適用:

トレーニング済みのモデルオブジェクトモデルを、5年間の将来のデータとともに元のトレーニングセットに適用します

from pyspark.sql.types import行#1979-80シーズンから2020-21シーズンのモデルを適用training_yrs = training.select( 'yr')。rdd.map(lambda x:x [0])。collect()training_y = training.select( 'fg3a_p36m')。rdd.map(lambda x:x [0])。collect()prediction_yrs = [2017、2018、2019、2020、2021] all_yrs = training_yrs + Forecast_yrs#ビルドテストDataFrame test_rdd = sc.parallelize(all_yrs)row = Row( 'yr')&ampamplt all_years_features = t.transform(test_rdd.map(row).toDF())#線形回帰モデルを適用df_results = model.transform(all_years_features).toPandas()

最終予測のプロット:

次に、結果をプロットして、指定した場所にグラフを保存できます。

plt.plot(df_results.yr、df_results.prediction、linewidth = 2、linestyle = '-'、color = '#224df7'、label = 'L2 Fit')plt.plot(training_yrs、training_y、color = '#f08080 '、label = None)plt.xlabel(' Year ')plt.ylabel('試行回数 ')plt.legend(loc = 4)_ = plt.title('プレーヤーの平均3ポイント試行(36分あたり) ')plt.tight_layout()plt.savefig(' / home / edureka / Downloads / Images / REGRESSION.png ')

出力:

そして、このグラフで、このPySparkチュートリアルブログの終わりに到達します。

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

このPySparkチュートリアルブログで、PySparkとは何か、PythonがSpark、RDD、およびPysparkを使用した機械学習に最適である理由を理解していただければ幸いです。おめでとうございます、あなたはもはやPySparkの初心者ではありません。 PySparkの詳細を知り、さまざまな業界のユースケースを理解したい場合は、 PythonでSpark ブログ。

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