在pyspark中使用拼写检查程序不合理地增加内存使用量

时间:2018-04-15 10:43:21

标签: python apache-spark memory pyspark spell-checking

我正在尝试使用pyspark -v2.3编写一个简单的tokenizer和拼写检查程序。输入不是太大 - 大约64M的数据。当我尝试使用拼写纠正选项ON时,内存使用量增加以填充我的32GB内存。我知道罪魁祸首是python autocorrect.spell(w)方法,但不知道如何解决这个问题。欢迎任何帮助。

我使用以下命令启动脚本: spark-submit -v --master local [*] --conf“spark.driver.memory = 16g”--conf“spark.driver.maxResultSize = 16”pyspark_create_embeddings.py

请注意,我没有获得Java堆OOM异常。这是否意味着这是堆栈增长?

import autocorrect.spell
def tokenize(text_rdd, clean_html=False, tokenizer="twitter", remove_reps=True, spell_correct=True):

    print("Processing {} tokns".format(text_rdd.count()))

    if(remove_reps):
        text_rdd = text_rdd.map(lambda text : re.sub(r'(.)\1{2,}', r'\1\1', text))

    tokens_rdd = text_rdd.map(lambda text: TweetTokenizer().tokenize(text))
    if spell_correct:
        tokens_rdd = tokens_rdd.map(lambda tokens: [spell(t) for t in tokens])
    #tokens_rdd = tokens_rdd.map(lambda tokens: [t for t in tokens])

    return tokens_rdd

0 个答案:

没有答案