Spark菜鸟学习营Day4

单元测试程序的编写

Spark相比于传统代码是比较难以调试的,单元测试的编写是非常必要的。

Step0:需求分析

在测试案例编写前,需完成需求分析工作,明确程序所有的输入和输出情况。

具体请见需求分析章节。

Step1:新建测试案例

测试案例统一放置在如下位置:

compute-->src-->test-->java-->com.icbc.aas.darts.compute-->split.processor

![2016-07-26 16-56-36](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 16-56-36.jpg)

选择New-->Java Class,在窗口中,输入测试代码名称,Kind选择ProcessorTest

![2016-07-26 16-58-02](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 16-58-02.jpg)

如果无法选到ProcessorTest,请在Settings-->File and Code Template,右上角选择Project

![2016-07-26 17-01-00](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-01-00.jpg)

在生成的测试案例代码中,首先完善addParams方法。

![2016-07-26 17-02-22](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-02-22.jpg)

Step2:输入数据准备

针对每个输入数据,循环以下步骤:

Step2.1:pojo(Java数据结构)建立

运行PojoMaker工具

![2016-07-26 17-03-48](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-03-48.jpg)

根据提示,完成pojo的建立

![2016-07-26 17-04-49](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-04-49.jpg)

Step2.2:数据文件建立

运行DataPrepareUtil工具。

![2016-07-26 17-05-38](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-05-38.jpg)

根据提示,从Oracle取数生成数据文件。

其中,suffix为文件名后缀,用于防止文件互相冲突,建议与代码编号一致。

![2016-07-26 17-06-30](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-06-30.jpg)

文件保存在如下路径中

![2016-07-26 17-09-45](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-09-45.jpg)

Step2.3:执行数据准备

在prepareData方法中,调用API,执行数据准备。

    @Override
public void prepareData(ComputeBatchNode cbn, JavaSparkContext sc, Hashtable params, ComputeResult result) {
//Dateframe:qtsl_temp
mockSparkTempTable("QTSL_TEMP", "_600", cbn); //Dataframe:par_fund_partner
mockSparkTempTable("PAR_FUND_PARTNER", "_600", cbn); //Oracle表:out_trd_qtsl_his
mockMybatisTempTable("splitSqlMapper.getQtslHis", "OUT_TRD_QTSL_HIS_600"); //RDD:qtsl_temp
mockSparkRDD("QTSL_TEMP", "_600", cbn, QtslTempPojo.class); //RDD:par_fund_fill_partner
mockSparkRDD("PAR_SYS_FILL_PARTNER", "_600", cbn, ParSysFillPartnerPojo.class); doPrepareData(cbn, params);
}

Step3:输出数据准备

Spark菜鸟学习营Day4 单元测试程序的编写的更多相关文章

  1. Spark菜鸟学习营Day6 分布式代码运行调试

    Spark菜鸟学习营Day6 分布式代码运行调试 作为代码调试,一般会分成两个部分 语法调试,也就是确定能够运行 结果调试,也就是确定程序逻辑的正确 其实这个都离不开运行,所以我们说一下如何让开发的S ...

  2. Spark菜鸟学习营Day5 分布式程序开发

    Spark菜鸟学习营Day5 分布式程序开发 这一章会和我们前面进行的需求分析进行呼应,完成程序的开发. 开发步骤 分布式系统开发是一个复杂的过程,对于复杂过程,我们需要分解为简单步骤的组合. 针对每 ...

  3. Spark菜鸟学习营Day3 RDD编程进阶

    Spark菜鸟学习营Day3 RDD编程进阶 RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lambda表示式来替换对象写 ...

  4. Spark菜鸟学习营Day2 分布式系统需求分析

    Spark菜鸟学习营Day2 分布式系统需求分析 本分析主要针对从原有代码向Spark的迁移.要注意的是Spark和传统开发有着截然不同的思考思路,所以我们需要首先对原有代码进行需求分析,形成改造思路 ...

  5. Spark菜鸟学习营Day1 从Java到RDD编程

    Spark菜鸟学习营Day1 从Java到RDD编程 菜鸟训练营主要的目标是帮助大家从零开始,初步掌握Spark程序的开发. Spark的编程模型是一步一步发展过来的,今天主要带大家走一下这段路,让我 ...

  6. 【菜鸟学习jquery源码】数据缓存与data()

    前言 最近比较烦,深圳的工作还没着落,论文不想弄,烦.....今天看了下jquery的数据缓存的代码,参考着Aaron的源码分析,自己有点理解了,和大家分享下.以后也打算把自己的jquery的学习心得 ...

  7. 菜鸟学习Andriod-弹窗

    菜鸟学习Andriod-弹窗 return new AlertDialog.Builder(ZyScreenSaver.this).setIcon( R.drawable.ic_launcher).s ...

  8. 菜鸟学习SSH——目录

    菜鸟学习Struts--配置Struts环境 菜鸟学习Struts--简易计算器 菜鸟学习Struts--bean标签库 菜鸟学习Struts--Scope属性 菜鸟学习Struts--国际化 菜鸟学 ...

  9. 菜鸟学习Spring——60s配置XML方法实现简单AOP

    一.概述. 上一篇博客讲述了用注解的形式实现AOP现在讲述另外一种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作参照上一篇博客<菜鸟学习Spring--60s使用annota ...

随机推荐

  1. css文字截取

    给文字设置宽度 text-overflow:ellipsis;  //超出部分用...表示 white-space:nowrap; //禁止换行 overflow:hidden; //超出部分的文字隐 ...

  2. 【HTML5 1】39个让你受益的HTML5教程

    闲话少说,本文作者为大家收集了网上学习HTML5的资源,期望它们能够帮助大家更好地学习HTML5. 好人啊! 只是,作者原来说的40个仅仅有39个,由于第5个和第8个是反复的. 原文在此! 1. 五分 ...

  3. 【Linux/Ubuntu学习 13】ubuntu上好用的pdf软件okular

    step 1: 安装 sudo apt-get install okular step 2: 注释 按 F6 快捷方式打开注释功能,你会发现太神奇了. step 3: 中文配置 如果安装完成后中文显示 ...

  4. unity与Android交互

    unity打包成安卓工程中的JAVA代码 public class UnityPlayerActivity extends Activity { //Unity中调用此函数 public int Ma ...

  5. uva 216 Getting in Line 最短路,全排列暴力做法

    题目给出离散的点,要求求出一笔把所有点都连上的最短路径. 最多才8个点,果断用暴力求. 用next_permutation举出全排列,计算出路程,记录最短路径. 这题也可以用dfs回溯暴力,但是用最小 ...

  6. 给力的轻量级JavaScript动画框架 - jsMorph

    jsMorph 是一个独立的轻量级 JavaScript 动画框架,可以用它来操纵多个 HTML 元素的样式,实现动画效果.此框架会自动检测起始位置.转换单位.调整渲染的速度,以此来获得更流畅的渲染体 ...

  7. 文本的输入输出(page52)

    2.2.4 再谈输入输出, 所用java类有:Out.java , In.java public class Cat{ public static void main(String[] args){ ...

  8. codeforces 590A A. Median Smoothing(思维)

    题目链接: A. Median Smoothing time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  9. codeforces 677A A. Vanya and Fence(水题)

    题目链接: A. Vanya and Fence time limit per test 1 second memory limit per test 256 megabytes input stan ...

  10. java的技术调用栈图示例