天天看点

用线性回归无编码实现文章浏览数预测

我们假设你下载的streamingpro,ansi-seg包在/tmp目录下。然后将spark 2.0 解压,进入主目录。

我已经发布了三个配置文件,分别计算:

词汇的 idf 值 ,链接 

给每个词汇生成一个唯一的数字标示,链接

使用线性回归算法进行训练, 链接

ps : 有道笔记有时候第一次刷不出来,你刷新下就好。

复制保存三个文件:

/tmp/idf.json

/tmp/term-index.json

/tmp/lr-train.json

生成idf 文件:

生成内容会存储成parquet文件。在/tmp/idf 目录下可以看到具体文件。

接着生成 term index ,文件位于 /tmp/term-with-index,最后进行模型训练,训练好的模型在/tmp/lr-model

后续只要在spark streaming中加载,即可完成流式计算。

以lr-train.json为例,大体框架如下:

这里有一个job,两个关联表,一个udf函数注册模块。我在配置文件的描述中已经有说明。job 是一个可执行的main函数,你可以这么理解。关联表申明后可以直接在job的sql中使用。udf函数注册模块则可以使得你很容易扩展sql的功能。

他们唯一的区别是,job 的strategy 是 sparkstreamingstrategy,而其他非job则是sparkstreamingrefstrategy。

因为一个配置文件里可能有多个job,每个job引用的关联表也是不一样,你需要显示指定引用,在job 的ref中申明即可:

这样框架自动为你准备好关联引用,注册udf函数,然后在lr1 这个job中就可以使用了。比如lr里的parse 函数就是通过udf_register模块提供的。

之后就是定义输入,执行的sql,以及输出(存储或者模型引擎)。 sql在案例中你可以看到,可以非常复杂,多个sql模块之间可以互相作用,通过多条sql实现一个复杂的逻辑。比如我们这里试下了tf/idf计算等功能。

文/祝威廉(简书作者)

原文链接:http://www.jianshu.com/p/d053a21944f5

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

继续阅读