2017-06-01 38 views
0

在我的应用程序中,我使用stanford NLP运行nlp作业。 stanford解析模型被打包在一个jar文件中,并且作为一个UDF格式化,我使用sqlContext.sql来使用它。但我觉得它运行得很慢。任何人都可以帮我加快速度?Spark:stanford-nlp在火花中运行速度太慢

如下代码:

sqlContext.sql("CREATE TEMPORARY FUNCTION segmenter AS 'cn.com.datamesh.stanford.nlp.StanfordNlp'").collect() 
sqlContext.sql("SELECT segmenter(text) FROM twitter_data") 
+1

你是否成功地以某种方式提高了速度? – Shaido

回答

0

你可以尝试一下斯坦福CoreNLP包装的火花。它应该简化使用并希望加速你的代码。这里是git page其中还包括命令可用。正如本short installation guide显示您可以将语言模型的星火背景下直接使用以下命令:

val version = "3.6.0" 
val model = s"stanford-corenlp-$version-models" // append "-english" to use the full English model 
val jars = sc.asInstanceOf[{def addedJars: scala.collection.mutable.Map[String, Long]}].addedJars.keys // use sc.listJars in Spark 2.0 
if (!jars.exists(jar => jar.contains(model))) { 
    import scala.sys.process._ 
    s"wget http://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/$version/$model.jar -O /tmp/$model.jar".!! 
    sc.addJar(s"/tmp/$model.jar") 
} 

有关支持机型就可以看到CoreNLP网站。