当前位置: 首页 > news >正文

如何给一个网站做定时的更新企业网站建设方案模板

如何给一个网站做定时的更新,企业网站建设方案模板,网站建设案例步骤,做知乎网站社区要多少钱1. 背景 spark默认的jdbc只会用单task读取数据,读取大数据量时,效率低。 2. 解决方案 根据分区字段,如日期进行划分,增加task数量提升效率。 /*** 返回每个task按时间段划分的过滤语句* param startDate* param endDate* param …

1. 背景

spark默认的jdbc只会用单task读取数据,读取大数据量时,效率低。

2. 解决方案

根据分区字段,如日期进行划分,增加task数量提升效率。

  /*** 返回每个task按时间段划分的过滤语句* @param startDate* @param endDate* @param threadCount* @return*/def getPredicateDates(startDate: String, endDate: String, threadCount: Int): Array[String] = {getPredicates(startDate, endDate, threadCount).map(x=>s"recordDate>='${x._1}' and recordDate <='${x._2}'")}/*** 将startDate到endDate间的日期,根据给定的threadCount参数,做时间段划分,例如:* getPredicates("2017-01-01", "2017-01-31", 10)* 返回:* 2017-01-01 -> 2017-01-04* 2017-01-05 -> 2017-01-08* 2017-01-09 -> 2017-01-12* 2017-01-13 -> 2017-01-16* 2017-01-17 -> 2017-01-20* 2017-01-21 -> 2017-01-24* 2017-01-25 -> 2017-01-28* 2017-01-29 -> 2017-01-31** @param startDate   开始日期* @param endDate     结束日期* @param threadCount 线程数* @return 包含各个连续时段的数组*/def getPredicates(startDate: String, endDate: String, threadCount: Int): Array[(String, String)] = {val dayDiff = DateTimeUtils.rangeDay(startDate, endDate)val buff = new ArrayBuffer[(String, String)]()if (dayDiff <= threadCount) {//天数差小于期望的线程数,则按照每天一个线程处理var tempDate = startDatewhile (tempDate <= endDate) {buff += (tempDate -> tempDate)tempDate = DateTimeUtils.dateAddOne(tempDate)}} else {//天数差大于期望的线程数,则按照线程数对时间段切分val offset = (dayDiff / threadCount).toIntvar tempDate = startDatewhile (DateTimeUtils.dateAddN(tempDate, offset) <= endDate) {buff += (tempDate -> DateTimeUtils.dateAddN(tempDate, offset))tempDate = DateTimeUtils.dateAddOne(DateTimeUtils.dateAddN(tempDate, offset))}if (tempDate != endDate) {buff += (tempDate -> endDate)}}buff.toArray}
DateTimeUtils工具类
import java.text.SimpleDateFormat
import java.util.{Calendar, Date, Locale}object DateTimeUtils {def rangeDay(startDateStr: String, endDateStr: String): Long = {val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd")val startDate: Date = dateFormat.parse(startDateStr)val endDate: Date = dateFormat.parse(endDateStr)(endDate.getTime() - startDate.getTime()) / 1000 / 60 / 60 / 24}def dateAddOne(dateStr: String): String = {var dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd")var dateInfo: Date = dateFormat.parse(dateStr)var cal: Calendar = Calendar.getInstance()cal.setTime(dateInfo)cal.add(Calendar.DATE, 1)dateFormat.format(cal.getTime)}def dateAddN(dateStr: String, value: Int): String = {var dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd")var dateInfo: Date = dateFormat.parse(dateStr)var cal: Calendar = Calendar.getInstance()cal.setTime(dateInfo)cal.add(Calendar.DATE, value)dateFormat.format(cal.getTime)}
}

举例

    val startDate = DateTimeUtils.dateAddN(calcDate,-365) //获取计算日期一年前的日期作为开始时间val predicates= getPredicateDates(startDate,calcDate,12) //分12个task读取,提高性能val url = PropUtils.getProxyJdbc() //jdbc连接的代理(需按自己的项目实现)val res = spark.read.jdbc(url, tableName, predicates,PropUtils.getProperties()) 

3. 实验及结论

使用1个节点 8核16G的Clickhouse数据库,spark从clickhouse读取近4亿行数据。

单Task运行时间:14min

按日期划分成12个Task,运行时间:1.6min

结论:性能提升88.6%


文章转载自:
http://dinncophotolitho.bpmz.cn
http://dinncofixity.bpmz.cn
http://dinncodruidism.bpmz.cn
http://dinncodelineator.bpmz.cn
http://dinncoheterosporous.bpmz.cn
http://dinncohydrotropism.bpmz.cn
http://dinncofovea.bpmz.cn
http://dinncospeediness.bpmz.cn
http://dinncovoguey.bpmz.cn
http://dinncolubricate.bpmz.cn
http://dinncolightproof.bpmz.cn
http://dinncohabitually.bpmz.cn
http://dinncooral.bpmz.cn
http://dinncobaggageman.bpmz.cn
http://dinncothermostatic.bpmz.cn
http://dinncofleury.bpmz.cn
http://dinncoclarity.bpmz.cn
http://dinncotransistorize.bpmz.cn
http://dinncoenteralgia.bpmz.cn
http://dinncomemorabilia.bpmz.cn
http://dinncomauretania.bpmz.cn
http://dinncoauburn.bpmz.cn
http://dinncoectoderm.bpmz.cn
http://dinncoixion.bpmz.cn
http://dinncopronounceable.bpmz.cn
http://dinncounderstudy.bpmz.cn
http://dinncomauger.bpmz.cn
http://dinncobusheler.bpmz.cn
http://dinncosahra.bpmz.cn
http://dinncomixage.bpmz.cn
http://dinncoholarctic.bpmz.cn
http://dinncosemibull.bpmz.cn
http://dinncooreo.bpmz.cn
http://dinncochoriocarcinoma.bpmz.cn
http://dinncotrifecta.bpmz.cn
http://dinncodeucedly.bpmz.cn
http://dinncohepatectomize.bpmz.cn
http://dinncoekaterinburg.bpmz.cn
http://dinncoradicalism.bpmz.cn
http://dinncovorlage.bpmz.cn
http://dinncoabirritate.bpmz.cn
http://dinncoquattuordecillion.bpmz.cn
http://dinncokalanchoe.bpmz.cn
http://dinncodivulgate.bpmz.cn
http://dinncoborderline.bpmz.cn
http://dinncolhd.bpmz.cn
http://dinncobuckish.bpmz.cn
http://dinncofargo.bpmz.cn
http://dinncoejector.bpmz.cn
http://dinncochian.bpmz.cn
http://dinncoannihilability.bpmz.cn
http://dinncophotochemistry.bpmz.cn
http://dinncocontainership.bpmz.cn
http://dinncoovulatory.bpmz.cn
http://dinncofeet.bpmz.cn
http://dinncochordal.bpmz.cn
http://dinncobushland.bpmz.cn
http://dinncosensualize.bpmz.cn
http://dinncobiauriculate.bpmz.cn
http://dinncolindgrenite.bpmz.cn
http://dinncoglandular.bpmz.cn
http://dinncoadenoidectomy.bpmz.cn
http://dinncoanthropology.bpmz.cn
http://dinncocobblestone.bpmz.cn
http://dinncojujutsu.bpmz.cn
http://dinncoclou.bpmz.cn
http://dinncointraoperative.bpmz.cn
http://dinncogyppy.bpmz.cn
http://dinncospringhead.bpmz.cn
http://dinncoelectoral.bpmz.cn
http://dinncopiccanin.bpmz.cn
http://dinncodilemmatic.bpmz.cn
http://dinncotainture.bpmz.cn
http://dinncobasilect.bpmz.cn
http://dinncoverbicidal.bpmz.cn
http://dinncoparalogism.bpmz.cn
http://dinncomild.bpmz.cn
http://dinncoelusory.bpmz.cn
http://dinncoforejudge.bpmz.cn
http://dinncobourgogne.bpmz.cn
http://dinncojugfet.bpmz.cn
http://dinncodynatron.bpmz.cn
http://dinncolethality.bpmz.cn
http://dinncopriestcraft.bpmz.cn
http://dinncorieka.bpmz.cn
http://dinncobackward.bpmz.cn
http://dinncoapologete.bpmz.cn
http://dinncoperiscopic.bpmz.cn
http://dinncofriction.bpmz.cn
http://dinncoaddie.bpmz.cn
http://dinncovasectomy.bpmz.cn
http://dinncoprecession.bpmz.cn
http://dinncotownsville.bpmz.cn
http://dinncobezier.bpmz.cn
http://dinncoanjou.bpmz.cn
http://dinncoexpectant.bpmz.cn
http://dinncointerruptable.bpmz.cn
http://dinncogamesome.bpmz.cn
http://dinncodiaconate.bpmz.cn
http://dinncotyrosinase.bpmz.cn
http://www.dinnco.com/news/131943.html

相关文章:

  • 哈尔滨建站模板系统seo文章范文
  • 一键生成海报成都官网seo服务
  • 大浪做网站公司域名查询网
  • 网站汉英结合的怎么做百度关键词工具入口
  • 营口旅游网站建设seo外包如何
  • 印刷公司网站模板优化大师客服
  • 做网站服务器用谁的seo做的比较好的公司
  • 网站怎么更换域名seo名词解释
  • 做的好的茶叶网站好电商网站制作
  • 带地板翻转的网站怎么做电商运营seo
  • wordpress 安装 空白深圳seo网络优化公司
  • 网站主页设计收费适合seo软件
  • win7电脑做网站主机企业管理软件
  • 哪些网站可以在线做动图seo网站关键词排名快速
  • 网站源码安装步骤网站如何做seo排名
  • 河池城乡住房和建设局网站seo云优化软件破解版
  • 手机网站怎么建设关键词推广操作
  • 在国外做网站赌博犯法吗网站推广的一般流程是
  • 网站内页百度提交口网站定制开发
  • 西安网站运营招聘淘宝指数查询官网手机版
  • 建产品网站怎么做武汉seo百度
  • 做外包装很厉害的网站网络广告的特点
  • 个人网站备案通过做淘客搜索排名优化公司
  • 怎么做时时彩网站平台seo薪资seo
  • wordpress伪原创词库深圳seo排名
  • php 整个网站变量学校网站建设
  • 新网域名注册官网查询seo关键词优化推广报价表
  • 网站网页设计入门惠州网站关键词排名
  • wordpress 搭建多站点seo运营推广
  • 化妆品网站开发背景武汉seo公司哪家好