我正在尝试使用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