package kafka

import java.io.InputStream
import java.text.SimpleDateFormat
import java.util.{Date, HashMap, Properties} import com.google.gson.JsonObject
import org.apache.kafka.clients.producer.{KafkaProducer, ProducerConfig, ProducerRecord}
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession object ExpandTimes {
val prop = new Properties()
val is: InputStream = this.getClass().getResourceAsStream("/conf.properties")
prop.load(is)
val ENVIRONMENT_SETING = "expandtimes_brokers_prd"
private val brokers = prop.getProperty(ENVIRONMENT_SETING)
// Zookeeper connection properties
private val props = new HashMap[String, Object]()
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokers)
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
"org.apache.kafka.common.serialization.StringSerializer")
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
"org.apache.kafka.common.serialization.StringSerializer")
private val producer = new KafkaProducer[String, String](this.props) def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setAppName("ExpandTimes")
val spark = SparkSession.builder().config(sparkConf).enableHiveSupport().getOrCreate()
val date = new Date(new Date().getTime - 86400000L)
val dateFormat = new SimpleDateFormat("yyyyMMdd")
val statisDate = dateFormat.format(date)
val querySql1 = "select member_id,times from sospdm.tdm_rpt_sign_expand_great_seven_d where statis_date = " + statisDate
val resultDF1 = spark.sql(querySql1)
if(!ENVIRONMENT_SETING.contains("prd")){
resultDF1.show(10)
}
resultDF1.rdd.foreach(row => {
val member_id: String = row.getAs[String]("member_id").toString()
val times: Int = row.getAs[Int]("times").toInt
val json = new JsonObject()
json.addProperty("memberId", member_id).toString
json.addProperty("times", times).toString
kafkaProducerSend(json.toString)
}) def kafkaProducerSend(args: String) {
if (args != null) {
val topic = "sign_status_count"
val message = new ProducerRecord[String, String](topic, null, args)
producer.send(message)
}
}
}
}

spark_to_kakfa的更多相关文章

随机推荐

  1. Word自定义多级列表样式

    Word自定义多级列表样式: 1. 2. 3.取个名字 在这里鼠标移上时显示 : 4. 5. 定义完成,即可使用:

  2. 【BZOJ5499】[2019省队联测]春节十二响(贪心)

    [BZOJ5499][2019省队联测]春节十二响(贪心) 题面 BZOJ 洛谷 题解 如果是一条折链,显然维护两侧的值,每次两个堆分别弹出一个\(max\)然后合并一下,最后再放回去就可以了. 那么 ...

  3. 动态dp学习笔记

    我们经常会遇到一些问题,是一些dp的模型,但是加上了什么待修改强制在线之类的,十分毒瘤,如果能有一个模式化的东西解决这类问题就会非常好. 给定一棵n个点的树,点带点权. 有m次操作,每次操作给定x,y ...

  4. Python--logging模块不同级别写入到不同文件

    将不同级别的logging 日志信息写入到不同文件 # -*- coding: utf-8 -*- import os import time import logging import inspec ...

  5. [USACO10DEC] Treasure Chest

    题目链接 90 Points:智障的区间 DP--设 dp[i][j] 表示区间 [i, j] 能取的最大价值,但我还是 sd 地开了第三维表示先取还是后取的价值. 交上去以为能 A,结果 #2 开心 ...

  6. <锋利的jQuery>读书笔记

  7. oldboy s21day11

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.列举 str.list.dict.set 中的常用方法(每种至少5个),并标注是否有返回值.'''str ...

  8. numpy&pandas基础

    numpy基础 import numpy as np 定义array In [156]: np.ones(3) Out[156]: array([1., 1., 1.]) In [157]: np.o ...

  9. QMainWindow-状态栏

    self.status_bar = self.statusBar()          # 显示状态栏 self.setStatusTip('这是一个窗口')       #鼠标在指定控件上时,状态栏 ...

  10. css基础二

    1,文本 文本颜色: <style> body {color:red;} /*为body的所有字体设置字体颜色为红色*/ h1 {color:#00ff00;} /*为h1元素设置字体颜色 ...