本文主要对使用Spark MLlib LDA进行主题预测时遇到的工程问题做一总结,列出其中的一些小坑,或可供读者借鉴。关于LDA模型训练可以参考:Spark LDA 主题抽取
开发环境:spark-1.5.2,hadoop-2.6.0,spark-1.5.2要求jdk7+。语料有大概70万篇博客,十亿+词汇量,词典大概有五万左右的词。
模型准备
利用spark mllib LDA进行主题预测需要训练好的LDAModel以及词典,注意词典需要是训练LDAModel时所对应的词典,索引与词需要一一对应。使用时只需LocalLDAModel.load(sc, trained_model)即可。
预测代码
注意,此处是将SparkContext嵌入一个独立的java程序中使用(on windows),而不是直接spark-submit。
// 加载模型
System.setProperty("hadoop.home.dir", hadoop_home_dir);
val conf = new SparkConf().
setAppName("Spark LDA Model").
setMaster(spark_master).
setJars(Array("target/xxx.jar")).
set("spark.driver.maxResultSize", "8g").
set("spark.executor.memory", "16g")
sc = new SparkContext(conf)
ldaModel = LocalLDAMode