Spark项目之电商用户行为分析大数据平台之(十)IDEA项目搭建及工具类介绍
一、创建Maven项目
创建项目,名称为LogAnalysis
二、常用工具类
2.1 配置管理组建
ConfigurationManager.java
1 import java.io.InputStream; 2 import java.util.Properties; 3 4 /** 5 * 配置管理组件 6 * 7 * 1、配置管理组件可以复杂,也可以很简单,对于简单的配置管理组件来说,只要开发一个类,可以在第一次访问它的 8 * 时候,就从对应的properties文件中,读取配置项,并提供外界获取某个配置key对应的value的方法 9 * 2、如果是特别复杂的配置管理组件,那么可能需要使用一些软件设计中的设计模式,比如单例模式、解释器模式 10 * 可能需要管理多个不同的properties,甚至是xml类型的配置文件 11 * 3、我们这里的话,就是开发一个简单的配置管理组件,就可以了 12 * 13 */ 14 public class ConfigurationManager { 15 16 // Properties对象使用private来修饰,就代表了其是类私有的 17 // 那么外界的代码,就不能直接通过ConfigurationManager.prop这种方式获取到Properties对象 18 // 之所以这么做,是为了避免外界的代码不小心错误的更新了Properties中某个key对应的value 19 // 从而导致整个程序的状态错误,乃至崩溃 20 private static Properties prop = new Properties(); 21 22 static { 23 try { 24 InputStream in = ConfigurationManager.class 25 .getClassLoader().getResourceAsStream("conf.properties"); 26 prop.load(in); 27 } catch (Exception e) { 28 e.printStackTrace(); 29 } 30 } 31 32 /** 33 * 获取指定key对应的value 34 * 35 * @param key 36 * @return value 37 */ 38 public static String getProperty(String key) { 39 40 return prop.getProperty(key); 41 } 42 43 /** 44 * 获取整数类型的配置项 45 * @param key 46 * @return value 47 */ 48 public static Integer getInteger(String key) { 49 String value = getProperty(key); 50 try { 51 return Integer.valueOf(value); 52 } catch (Exception e) { 53 e.printStackTrace(); 54 } 55 return 0; 56 } 57 58 /** 59 * 获取布尔类型的配置项 60 * @param key 61 * @return value 62 */ 63 public static Boolean getBoolean(String key) { 64 String value = getProperty(key); 65 try { 66 return Boolean.valueOf(value); 67 } catch (Exception e) { 68 e.printStackTrace(); 69 } 70 return false; 71 } 72 73 /** 74 * 获取Long类型的配置项 75 * @param key 76 * @return 77 */ 78 public static Long getLong(String key) { 79 String value = getProperty(key); 80 try { 81 return Long.valueOf(value); 82 } catch (Exception e) { 83 e.printStackTrace(); 84 } 85 return 0L; 86 }
2.2 常量的接口
Constants.java
1 /** 2 * 常量接口 3 * @author Administrator 4 * 5 */ 6 public interface Constants { 7 8 /** 9 * 项目配置相关的常量 10 */ 11 String JDBC_DRIVER = "jdbc.driver"; 12 String JDBC_DATASOURCE_SIZE = "jdbc.datasource.size"; 13 String JDBC_URL = "jdbc.url"; 14 String JDBC_USER = "jdbc.user"; 15 String JDBC_PASSWORD = "jdbc.password"; 16 String JDBC_URL_PROD = "jdbc.url.prod"; 17 String JDBC_USER_PROD = "jdbc.user.prod"; 18 String JDBC_PASSWORD_PROD = "jdbc.password.prod"; 19 String SPARK_LOCAL = "spark.local"; 20 String SPARK_LOCAL_TASKID_SESSION = "spark.local.taskid.session"; 21 String SPARK_LOCAL_TASKID_PAGE = "spark.local.taskid.page"; 22 String SPARK_LOCAL_TASKID_PRODUCT = "spark.local.taskid.product"; 23 String KAFKA_METADATA_BROKER_LIST = "kafka.metadata.broker.list"; 24 String KAFKA_TOPICS = "kafka.topics"; 25 26 /** 27 * Spark作业相关的常量 28 */ 29 String SPARK_APP_NAME_SESSION = "UserVisitSessionAnalyzeSpark"; 30 String SPARK_APP_NAME_PAGE = "PageOneStepConvertRateSpark"; 31 String FIELD_SESSION_ID = "sessionid"; 32 String FIELD_SEARCH_KEYWORDS = "searchKeywords"; 33 String FIELD_CLICK_CATEGORY_IDS = "clickCategoryIds"; 34 String FIELD_AGE = "age"; 35 String FIELD_PROFESSIONAL = "professional"; 36 String FIELD_CITY = "city"; 37 String FIELD_SEX = "sex"; 38 String FIELD_VISIT_LENGTH = "visitLength"; 39 String FIELD_STEP_LENGTH = "stepLength"; 40 String FIELD_START_TIME = "startTime"; 41 String FIELD_CLICK_COUNT = "clickCount"; 42 String FIELD_ORDER_COUNT = "orderCount"; 43 String FIELD_PAY_COUNT = "payCount"; 44 String FIELD_CATEGORY_ID = "categoryid"; 45 46 String SESSION_COUNT = "session_count"; 47 48 String TIME_PERIOD_1s_3s = "1s_3s"; 49 String TIME_PERIOD_4s_6s = "4s_6s"; 50 String TIME_PERIOD_7s_9s = "7s_9s"; 51 String TIME_PERIOD_10s_30s = "10s_30s"; 52 String TIME_PERIOD_30s_60s = "30s_60s"; 53 String TIME_PERIOD_1m_3m = "1m_3m"; 54 String TIME_PERIOD_3m_10m = "3m_10m"; 55 String TIME_PERIOD_10m_30m = "10m_30m"; 56 String TIME_PERIOD_30m = "30m"; 57 58 String STEP_PERIOD_1_3 = "1_3"; 59 String STEP_PERIOD_4_6 = "4_6"; 60 String STEP_PERIOD_7_9 = "7_9"; 61 String STEP_PERIOD_10_30 = "10_30"; 62 String STEP_PERIOD_30_60 = "30_60"; 63 String STEP_PERIOD_60 = "60"; 64 65 /** 66 * 任务相关的常量 67 */ 68 String PARAM_START_DATE = "startDate"; 69 String PARAM_END_DATE = "endDate"; 70 String PARAM_START_AGE = "startAge"; 71 String PARAM_END_AGE = "endAge"; 72 String PARAM_PROFESSIONALS = "professionals"; 73 String PARAM_CITIES = "cities"; 74 String PARAM_SEX = "sex"; 75 String PARAM_KEYWORDS = "keywords"; 76 String PARAM_CATEGORY_IDS = "categoryIds"; 77 String PARAM_TARGET_PAGE_FLOW = "targetPageFlow"; 78 79 }