溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Spark下的詞頻計數(shù)是怎樣進(jìn)行的

發(fā)布時間:2021-12-16 18:45:57 來源:億速云 閱讀:127 作者:柒染 欄目:云計算

Spark下的詞頻計數(shù)是怎樣進(jìn)行的,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

安裝 Spark

  1. 下載 Spark 1.52 Pre-Built for hadoop 2.6 http://spark.apache.org/downloads.html。還需要預(yù)裝 Java,Scala 環(huán)境。

  2. 將 Spark 目錄文件放到 /opt/spark-hadoop 下,運(yùn)行 ./spark-shell 會出現(xiàn)連接 Scale 窗口;運(yùn)行 ./python/pyspark 會出現(xiàn)連接 Python 的窗口。這表示安裝成功。

  3. 將 python 目錄下 pyspark 復(fù)制到 Python 安裝目錄 /usr/local/lib/python2.7/dist-packages。這樣才可以在程序中導(dǎo)入pyspark 庫。

測試

#!/usr/bin/python
# -*- coding:utf-8 -*-

from pyspark import SparkConf, SparkContext
import os

os.environ["SPARK_HOME"] = "/opt/spark-hadoop"

APP_NAME = "TopKeyword"

if __name__ == "__main__":

    logFile = "./README.md"
    sc = SparkContext("local", "Simple App")
    logData = sc.textFile(logFile).cache()

    numAs = logData.filter(lambda s: 'a' in s).count()
    numBs = logData.filter(lambda s: 'b' in s).count()

    print("Lines with a: %i, lines with b: %i" % (numAs, numBs))

打印結(jié)果

Lines with a: 3, lines with b: 2

詞頻計數(shù)

#!/usr/bin/python
# -*- coding:utf-8 -*-

from pyspark import SparkConf, SparkContext
import os
import sys

reload(sys)
sys.setdefaultencoding("utf-8")

os.environ["SPARK_HOME"] = "/opt/spark-hadoop"


def divide_word():
    word_txt = open('question_word.txt', 'a')

    with open('question_title.txt', 'r') as question_txt:
        question = question_txt.readline()
        while(question):
            seg_list = jieba.cut(question, cut_all=False)
            line = " ".join(seg_list)
            word_txt.write(line)
            question = question_txt.readline()
    question_txt.close()
    word_txt.close()


def word_count():
    sc = SparkContext("local", "WordCount")
    text_file = sc.textFile("./question_word.txt").cache()
    counts = text_file.flatMap(lambda line: line.split(" ")) \
             .map(lambda word: (word, 1)) \
             .reduceByKey(lambda a, b: a + b)
    counts.saveAsTextFile("./wordcount_result.txt")

if __name__ == "__main__"
    word_count()

關(guān)于Spark下的詞頻計數(shù)是怎樣進(jìn)行的問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI