Spark菜鳥学習キャンプDay 4ユニットテストプログラムの作成

2609 ワード

Spark菜鳥学習キャンプDay 4


ユニットテストプログラムの作成


Sparkは従来のコードに比べてデバッグが困難であり,ユニットテストの作成が必要である.

Step 0:需要分析


テストケースを作成する前に、需要分析を完了し、プログラムのすべての入力と出力状況を明確にする必要があります.具体的には、需要分析の章を参照してください.

Step 1:新規テストケース


テストケースは、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)

Step 2:入力データ準備


入力データごとに、次の手順に従います.

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);
    }

Step 3:出力データ準備