20.Spark上下文构建以及模拟数据生成

目录

本文为《Spark大型电商项目实战》 系列文章之一,主要介绍Spark上下文构建和模拟数据生成方式。

导入模拟数据生成类

在包com.erik.sparkproject.test下导入电商数据模拟生成程序MockData.java,这个程序下载地址:链接:http://pan.baidu.com/s/1pKN7PEV 密码:vwpc

创建Spark作业类

创建包com.erik.sparkproject.spak,然后创建用户访问session分析Spark作业类UserVisitSessionAnalyzeSpark.java

package com.erik.sparkproject.spark;

import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.hive.HiveContext;

import com.erik.sparkproject.conf.ConfigurationManager;
import com.erik.sparkproject.constant.Constants;
import com.erik.sparkproject.test.MockData;

/**
 * 用户访问session分析spark作业
 * @author Erik
 *
 */
public class UserVisitSessionAnalyzeSpark {

    public static void main(String[] args) {
        //构建spark上下文

        //首先在Constants.java中设置spark作业相关的常量
        //String SPARK_APP_NAME = "UserVisitSessionAnalyzeSpark";
        //保存Constants.java配置
        SparkConf conf = new SparkConf()
                .setAppName(Constants.SPARK_APP_NAME)
                .setMaster("local");

        JavaSparkContext sc = new JavaSparkContext(conf);
        SQLContext sqlContext = getSQLContext(sc.sc());

        //生成模拟测试数据
        mockData(sc, sqlContext);

        //关闭spark上下文
        sc.close();
    }   
    /**
     * 获取SQLContext
     * 如果在本地测试环境的话,那么久生成SQLC哦那text对象
     *如果在生产环境运行的话,那么就生成HiveContext对象
     * @param sc SparkContext
     * @return SQLContext
     */
    private static SQLContext getSQLContext(SparkContext sc) {
        //在my.properties中配置
        //spark.local=true(打包之前改为flase)
        //在ConfigurationManager.java中添加
        //public static Boolean getBoolean(String key) {
        //  String value = getProperty(key);
        //  try {
        //      return Boolean.valueOf(value);
        //  } catch (Exception e) {
        //      e.printStackTrace();
        //  }
        //  return false;   
        //}
        //在Contants.java中添加
        //String SPARK_LOCAL = "spark.local";

        boolean local = ConfigurationManager.getBoolean(Constants.SPARK_LOCAL);
        if(local) {
            return new SQLContext(sc);
        }else {
            return new HiveContext(sc);
        }   
    }

    /**
     * 生成模拟数据
     * 只有是本地模式,才会生成模拟数据
     * @param sc
     * @param sqlContext
     */
    private static void mockData(JavaSparkContext sc, SQLContext sqlContext) {
        boolean local = ConfigurationManager.getBoolean(Constants.SPARK_LOCAL);
        if(local) {
            MockData.mock(sc, sqlContext);
        }
    }
}

运行后会输入类似于[****-**-**,12,44e36c283e3846ed8f3e3bf01b534158,1,2017-03-06 22:46:46,火锅,null,null,null,null,null,null][0,user0,name0,54,professional94,city66,female]的信息,说明模拟数据已经生成。

《Spark 大型电商项目实战》源码:https://github.com/Erik-ly/SprakProject

本文为《Spark大型电商项目实战》系列文章之一。
更多文章:Spark大型电商项目实战:http://blog.csdn.net/u012318074/article/category/6744423

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值