出力動作、結果はローカルおよびMySQLへの輸出に保存されます

saveAsTextFiles( "")
结果写入到のMySQL
サービスが開始MYSQL
MySQLの-uのHadoop -p
使用スパーク
テーブルWORDCOUNT(ワードCHAR(20)、カウントINT(4))を作成します。

#しているが、MySQLの接続モジュールPyMySQL Pythonのインストール
はsudo apt-getの更新
のpython3にsudoをインストールAPT-GET-PIP
PIP3 -Vに
はsudo PIP3インストールPyMySQLを

そして、ブログの記事にも同じことが保存されて追加することです
!ます。#/ usr / bin / envをのpython3
From__future__importのprint_function
インポートSYS
pysparkインポートSparkContextから
pyspark.streamingインポートStreamingContextのから
:if__name __ == "メイン"
!IF LEN(sys.argvの)=を。3:
印刷( "用法:<。ホスト名、ポート> NetworkWordCountStateful.py"、ファイル= sys.stderror)
終了(-1)
SC = SparkContext(appNameは= "PythonStreamingStatefulNetworkWordCount")
SSC = StreamingContext(SC ,. 1)
ssc.checkpoint ( "ファイル:/// USR /ローカル/スパーク/ MyCode /ストリーミング/ステートフル/")
initialRDD sc.parallelize =([(u'hello '、1)、(u'world' ,. 1)])#初期RDD 、Uは、Unicodeエンコーディングであります
#ncエンドを介して送信される(Hadoopの、1)(Hadoopの、 1)(スパーク、1)(スパーク、1) 最初にupdateStateByKeyに、(Hadoopの、(1,1))(スパーク、(1,1)) 及び(1,1)の最初の処理もlast_sum渡され、updateFuncを広げる
:DEF updateFunc(new_values、last_sum)
リターンSUM(new_values)+(0又はlast_sum)

FUNC DEF(RDD):
repartitionedRDD = rdd.repartition(3)#は、オープンデータベース接続の多くはありません
repartitionedRDD.foreachPartition(dbfuncを)

DEF dbfunc(レコード):
DB = pymysql.connect(「ローカルホスト」、「Hadoopの」、「Hadoopの」、「スパーク」)
カーソル= db.cursor()#指针
DEFdoinsert§:
WORDCOUNTにSQL =「インサート(ワード、カウント)の値( '%s'は、 '%s'の)」%(STR(P [0])、STR(P [1]))
してみてください:
cursor.execute(SQL)
db.commit()
除く
デシベルを。ロールバック()
レコード内の項目について:
doinsert(アイテム)

行= ssc.socketTextStream(sys.argvの[1]、INT(sys.argvの[2]))#socketTextStream(「ローカルホスト」、9999)
running_counts = lines.flatMap(ラムダ行:line.split(」「))。地図(ラムダX:(X、1))。updateStateByKey(updateFunc、initialRDD = initialRDD)
running_counts.pprint()
running_counts.foreachRDD(FUNC)

ssc.start()
ssc.awaitTermination()

公開された25元の記事 ウォンの賞賛0 ビュー367

おすすめ

転載: blog.csdn.net/qq_45371603/article/details/104661665