背景

​ 我们的数据挖掘平台对数据统计有比较迫切的需求,而Spark本身对数据统计已经做了一些工作,希望梳理一下Spark已经支持的数据统计功能,后期再进行扩展。

准备数据

在参考文献6中下载鸢尾花数据,此处格式为iris.data格式,先将data后缀改为csv后缀(不影响使用,只是为了保证后续操作不需要修改)

数据格式如下:

SepalLength SepalWidth PetalLength PetalWidth Name
5.1 3.5 1.4 0.2 Iris-setosa
4.9 3 1.4 0.2 Iris-setosa
4.7 3.2 1.3 0.2 Iris-setosa
4.6 3.1 1.5 0.2 Iris-setosa
5 3.6 1.4 0.2 Iris-setosa
5.4 3.9 1.7 0.4 Iris-setosa
4.6 3.4 1.4 0.3 Iris-setosa

数据说明见附录中的鸢尾花数据

更多

背景

​ 我们的数据挖掘平台对数据统计有比较迫切的需求,而Spark本身对数据统计已经做了一些工作,希望梳理一下Spark已经支持的数据统计功能,后期再进行扩展。

准备数据

在参考文献6中下载鸢尾花数据或是从此处下载,一般为iris.csv格式,带title,需要把title删除

数据格式如下:

SepalLength SepalWidth PetalLength PetalWidth Name
5.1 3.5 1.4 0.2 Iris-setosa
4.9 3 1.4 0.2 Iris-setosa
4.7 3.2 1.3 0.2 Iris-setosa
4.6 3.1 1.5 0.2 Iris-setosa
5 3.6 1.4 0.2 Iris-setosa
5.4 3.9 1.7 0.4 Iris-setosa
4.6 3.4 1.4 0.3 Iris-setosa

数据说明见附录中的鸢尾花数据

更多

  1. YML文件key重复问题

起因:一年前搭建了一个博客,后来要在公司的电脑上写博客,在这个过程中hexo和nodejs都已经升级了,使用最新版的nodejs和hexo重新执行,出错,,错误信息如下:

ERROR Theme config load failed.
ERROR Process failed: _config.yml
YAMLException: duplicated mapping key at line 63, column -1167:
​ author:
^

之前只关注根目录下的_config.yml, 没有找到重复的author, 后来全局搜索了一下,发现在themes/jacman下也有一个_config.yml, 确保两个文件没有重复的key即可。

  1. highlight.js: Cannot set property ‘lastIndex’ of undefined

修改站点配置文件的_config.yml,把 auto_detect 设置为false 即可。

  1. git: https证书认证错误

错误信息如下:

git clone https://github.com/starqiu/PythonLearn.git
Cloning into ‘PythonLearn’…
fatal: unable to access ‘https://github.com/starqiu/PythonLearn.git/': SSL certificate problem: unable to get local issuer certificate

这里其实是电脑没有安装对应的ca证书,所以无法通过https连接到git服务器。

这里通过设置git的ssl验证跳过了这个错误(win下):

git config --global http.sslVerify false

  1. git登录提示用户名密码错误

On branch master
nothing to commit, working tree clean
Logon failed, use ctrl+c to cancel basic credential prompt.
bash: /dev/tty: No such device or address

首先 bash: /dev/tty: No such device or address问题是因为使用了Cywin或是MinGW等命令行工具导致后面命令行与用户的交互界面显示不出来。(即在命令行输入用户名和密码)。解决方法是使用Windows自带的命令行工具(CMD或是PowerShell),此处我采用的是PowerShell
换用PowerShell执行后,弹出的对话框输入正确用户名密码后仍然出错,但会在命令行中提示输入用户名密码,此时仍然出错,但已经提示新的问题了:remote: You must verify your email address,原来是邮件没有校验。登录github后访问https://github.com/settings/emails校验邮箱,问题解决,使用原来的方式提交也没有问题了。

Username for ‘https://github.com': XXX
Password for ‘https://XXX@github.com':
remote: You must verify your email address.
remote: See https://github.com/settings/emails.

先在一台可以联网的相同操作系统环境下下载离线安装包,然后内网服务器构建本地yum源,最后安装docker

下载离线安装包

  1. 在可以联网的机器上下载rpm包

更多

初始环境

系统:CentOS 6.7

安装必须的软件

  1. 安装SVN服务器
    如果已安装,使用svnserve --version查看版本
    如果未安装,运行yum -y install subversion命令

  2. 支持WEB方式管理SVN服务器
    如果要支持web方式访问,还需要安装httpd mod_dav_svn mod_perl, 运行yum -y install httpd mod_dav_svn mod_perl命令。

更多

定义

CRISP-DM是Cross-Industry Standard Process for Data Mining的缩写,也就是数据挖掘的跨行业标准流程,是一个已被业界证明的有效指南。它作为:

  1. 一种方法论: 包含了对数据挖掘项目的六个典型阶段,以及每个阶段所包含的任务,并且解释了这些任务之间的关系。
  2. 一种流程模型: CRISP-DM提供了对数据挖掘生命周期的一个概览。这个生命周期模型包含了六个阶段,模型里的箭头指明了各阶段间最重要和频繁的依赖项。这些阶段的次序并非是严格的,事实上,大多数项目在需要的时候,会在各阶段之间来回反复。

更多

想读

  • 数据挖掘:概念与技术(原书第3版)
  • Java性能优化权威指南
  • 统计思维:程序员数学之概率统计 唐尼 (Allen B.Downey)
  • 深入理解Java虚拟机:JVM高级特性与最佳实践
  • Spark大数据处理:技术、应用与性能优化
  • 图解机器学习 机器学习算法入门教程
  • C++ 沉思录
  • UNIX环境高级编程
  • 七周七数据库 数据库NoSQL运动指南
  • Java并发编程实战

    更多

jacman使用了多说的评论系统,多说有最新评论的嵌入代码。当然直接嵌入肯定是不行的,和整体风格不统一看着不好看,那么就搞个类似友情链接、目录之类的widget好了。本文目标是新建一个widget显示多说的最新评论。

步骤

新建widget

widget 文件在路径themes/pacman/layout/_widget/下,参考links.ejs以及archives.ejs及多说的嵌入代码,在该目录下新建一个comment.ejs文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<% if (theme.duoshuo_recent_comment && theme.duoshuo_shortname.length) { %>
<div class="commentslist">
<p class="asidetitle"><%= __('comments') %></p>
<ul class="ds-recent-comments" data-num-items="5" data-show-avatars="0" data-show-time="1" data-show-admin="1" data-excerpt-length="32" data-show-title="1"></ul>
</div>
<!--多说js加载开始,一个页面只需要加载一次 -->
<script type="text/javascript">
var duoshuoQuery = {short_name:"<%= theme.duoshuo.short_name %>"};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = 'http://static.duoshuo.com/embed.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>
<!--多说js加载结束,一个页面只需要加载一次 -->
<% } %>

下面那段js是多说提供的嵌入代码,<ul>标签有一些参数可以指定评论的具体数量之类的,大致有以下可选参数

1
2
3
4
5
6
7
 //以下参数均为可选
data-num-items="10" //显示最新评论的条数,最大支持200条
data-show-avatars="1" //是否显示头像,1:显示,0:不显示
data-show-time="1" //是否显示时间,1:显示,0:不显示
data-show-title="0" //是否显示标题,1:显示,0:不显示
data-show-admin="1" //是否显示管理员的评论,1:显示,0:不显示
data-excerpt-length="70"//最大显示评论汉字数

配置widget

  1. 首先先添加“最新评论”的多语言版本字符串值
    即用变量comments表示,需要修改的相关文件为themes/pacman/languages/*.yml,看一下文件内容就知道怎么改了
  2. 添加一下相关的css样式
    这里是以友情链接widget的css作为基准,稍加修改的,在themes/pacman/source/css/_partial/aside.styl文件末尾添加如下内容:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     //comments
    .commentslist
    margin-top 0.5em
    @media mini
    width 45%
    float left
    margin 0 5% 0 0
    @media tablet
    width 100%
    float none
    margin 1em 0 0
    ul
    padding 0.5em 0
    a
    font-size 1em
    line-height line-height
    display block
    padding 0
    &:hover
    color color-theme
    transition color .25s

    .ds-excerpt
    font-size 1.1em
    color color-theme

    .ds-recent-comments
    margin-top -0.6em
    margin-left 0.3em

开启widget

themes/jacman/_config.yml的comment处添加配置duoshuo_recent_comment: true

参考

[1]: 给hexo/pacman增加“最新评论”的widget

问题

如何运行一个测试用例多次?

解答

  1. 使用@RunWith(Parameterized.class),需要多写一些无谓的代码
  2. 使用Rule,自己实现Repeat注解.见[参考4][4]
  3. 使用Runner,自己实现Repeat注解.见参考1 这个方法目前实验起来最好。
    使用:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @RunWith(ExtendedRunner.class)  
    public class ExampleTest3 {
    @Test
    @Repeat(10)
    public void sometimesFail() {
    int rand = new Random().nextInt(3);
    if (rand % 3 == 0) {
    fail();
    }
    }
    }

更多