1.項目搭建及,commons模塊解析,離線實時數據準備

項目搭建

  • github下載源碼
  • 使用idea創建maven項目,並創建如下四個模塊

在這裏插入圖片描述

  • 複製源碼中的pom.xml,修改你的環境版本號
  • 複製mock,commons模塊到你的項目中

common模塊解析

在這裏插入圖片描述

conf

基於文件的配置生成器,會讀取resources下的commerce.properties,並返回所有配置信息

  */
object ConfigurationManager {

  // 創建用於初始化配置生成器實例的參數對象
  private val params = new Parameters()
  // FileBasedConfigurationBuilder:產生一個傳入的類的實例對象
  // FileBasedConfiguration:融合FileBased與Configuration的接口
  // PropertiesConfiguration:從一個或者多個文件讀取配置的標準配置加載器
  // configure():通過params實例初始化配置生成器
  // 向FileBasedConfigurationBuilder()中傳入一個標準配置加載器類,生成一個加載器類的實例對象,然後通過params參數對其初始化
  private val builder = new FileBasedConfigurationBuilder[FileBasedConfiguration](classOf[PropertiesConfiguration])
    .configure(params.properties().setFileName("commerce.properties"))

  // 通過getConfiguration獲取配置對象
  val config = builder.getConfiguration()

}

Constains

代碼規範的限制

	/**
	 * 項目配置相關的常量
	 */
	val JDBC_DATASOURCE_SIZE = "jdbc.datasource.size"
	val JDBC_URL = "jdbc.url"
	val JDBC_USER = "jdbc.user"
	val JDBC_PASSWORD = "jdbc.password"

	val KAFKA_TOPICS = "kafka.topics"
	
	/**
	 * Spark作業相關的常量
	 */
	val SPARK_APP_NAME_SESSION = "UserVisitSessionAnalyzeSpark"
	val SPARK_APP_NAME_PAGE = "PageOneStepConvertRateSpark"

	/**
		* user_visit_action、user_info、product_info表中字段對應的字段名常量
		*/
	val FIELD_SESSION_ID = "sessionid"
	val FIELD_SEARCH_KEYWORDS = "searchKeywords"
	val FIELD_CLICK_CATEGORY_IDS = "clickCategoryIds"
	val FIELD_AGE = "age"
	val FIELD_PROFESSIONAL = "professional"
	val FIELD_CITY = "city"
	val FIELD_SEX = "sex"
	val FIELD_VISIT_LENGTH = "visitLength"
	val FIELD_STEP_LENGTH = "stepLength"
	val FIELD_START_TIME = "startTime"
	val FIELD_CLICK_COUNT = "clickCount"
	val FIELD_ORDER_COUNT = "orderCount"
	val FIELD_PAY_COUNT = "payCount"
	val FIELD_CATEGORY_ID = "categoryid"

model

各個封裝類

/**
 * 用戶廣告點擊量
 * @author wuyufei
 *
 */
case class AdUserClickCount(date:String,
                            userid:Long,
                            adid:Long,
                            clickCount:Long)


/**
 * 廣告實時統計
 *
 */
case class AdStat(date:String,
                  province:String,
                  city:String,
                  adid:Long,
                  clickCount:Long)

/**
 * 各省top3熱門廣告

Pool

對象連接池的創建,獲取,摧毀
批量操作數據

UTILs

時間,字符串,等工具類

離線數據準備

mock模塊下的MockDataGenerate

  • 如果你想用外部hive保存數據,請將hive的配置文件hive-core.xml放到mock模塊的resources目錄下
  • 如果你只想用spark自帶hive保存數據,則無需做任何操作
  • 如果你想用hadoop保存數據,則改以下代碼:(注意,這裏一個三個表格,所以你需要指定創建三個目錄來放三個表格的數據)
 private def insertHive(spark: SparkSession, tableName: String, dataDF: DataFrame): Unit = {
//    spark.sql("DROP TABLE IF EXISTS " + tableName)
    //dataDF.write.saveAsTable(tableName)
    dataDF.write.parquet("hdfs://hadoop1:9000/"+tableName)
  }

在這裏插入圖片描述

  • 最後,運行main函數,

實時數據準備

你需要到common模塊>resources>commerce.properties
修改kafka.broker.list的相關配置爲你的配置

在這裏插入圖片描述

運行Main函數,就會發送消息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章