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

给公司做个网站多少钱做网站建设的有哪些

给公司做个网站多少钱,做网站建设的有哪些,wordpress相册汉化版,智慧团建官网登录口如果你比较熟悉JavaWeb应用开发,那么对Spring框架一定不陌生,并且JavaWeb通常是基于SSM搭起的架构,主要用Java语言开发。但是开发Spark程序,Scala语言往往必不可少。 众所周知,Scala如同Java一样,都是运行…

如果你比较熟悉JavaWeb应用开发,那么对Spring框架一定不陌生,并且JavaWeb通常是基于SSM搭起的架构,主要用Java语言开发。但是开发Spark程序,Scala语言往往必不可少。

众所周知,Scala如同Java一样,都是运行在JVM上的,所以它具有很多Java语言的特性,同时作为函数式编程语言,又具有自己独特的特性,实际应用中除了要结合业务场景,还要对Scala语言的特性有深入了解。

如果想像使用Java语言一样,使用Scala来利用Spring框架特性、并结合Spark来处理离线数据,应该怎么做呢?

本篇文章,通过详细的示例代码,介绍上述场景的具体实现,大家如果有类似需求,可以根据实际情况做调整。

1.定义一个程序启动入口

object Bootstrap {private val log = LoggerFactory.getLogger(Bootstrap.getClass)//指定配置文件如log4j的路径val ConfFileName = "conf"val ConfigurePath = new File("").getAbsolutePath.substring(0, if (new File("").getAbsolutePath.lastIndexOf("lib") == -1) 0else new File("").getAbsolutePath.lastIndexOf("lib")) + this.ConfFileName + File.separator//存放实现了StatsTask的离线程序处理的类private val TASK_MAP = Map("WordCount" -> classOf[WordCount])def main(args: Array[String]): Unit = {//传入一些参数,比如要运行的离线处理程序类名、处理哪些时间的数据if (args.length < 1) {log.warn("args 参数异常!!!" + args.toBuffer)System.exit(1)}init(args)}def init(args: Array[String]) {try {SpringUtils.init(Array[String]("applicationContext.xml"))initLog4j()val className = args(0)// 实例化离线处理类val task = SpringUtils.getBean(TASK_MAP(className))args.length match {case 3 =>// 处理一段时间的每天离线数据val dtStart = DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime(args(1))val dtEnd = DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime(args(2))val days = Days.daysBetween(dtStart, dtEnd).getDays + 1for (i <- 0 until days) {val etime = dtStart.plusDays(i).toString("yyyy-MM-dd")task.runTask(etime)log.info(s"JOB --> $className 已成功处理: $etime 的数据")}case 2 =>// 处理指定的某天离线数据val etime = DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime(args(1)).toString("yyyy-MM-dd")task.runTask(etime)log.info(s"JOB --> $className 已成功处理: $etime 的数据")case 1 =>// 处理前一天离线数据val etime = DateTime.now().minusDays(1).toString("yyyy-MM-dd")task.runTask(etime)log.info(s"JOB --> $className 已成功处理: $etime 的数据")case _ => println("执行失败 args参数:" + args.toBuffer)}} catch {case e: Exception =>println("执行失败 args参数:" + args.toBuffer)e.printStackTrace()}// 初始化log4jdef initLog4j() {val fileName = ConfigurePath + "log4j.properties"if (new File(fileName).exists) {PropertyConfigurator.configure(fileName)log.info("日志log4j已经启动")}}}
}

2.加载Spring配置文件工具类

object SpringUtils {private var context: ClassPathXmlApplicationContext = _def getBean(name: String): Any = context.getBean(name)def getBean[T](name: String, classObj: Class[T]): T = context.getBean(name, classObj)def getBean[T](_class: Class[T]): T = context.getBean(_class)def init(springXml: Array[String]): Unit = {if (springXml == null || springXml.isEmpty) {trythrow new Exception("springXml 不可为空")catch {case e: Exception => e.printStackTrace()}}context = new ClassPathXmlApplicationContext(springXml(0))context.start()}}

3.Spring配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- 配置包扫描 --><context:component-scan base-package="com.bigdata.stats"/></beans>

4.定义一个trait,作为离线程序的公共"父类"

trait StatsTask extends Serializable {//"子类"继承StatsTask重写该方法实现自己的业务处理逻辑 def runTask(etime: String)
}
5.继承StatsTask的离线处理类
//不要忘记添加 @Component ,否则无法利用Spring对WordCount进行实例化
@Component
class WordCount extends StatsTask {override def runTask(etime: String): Unit = {val sparkSession = SparkSession.builder().appName("test").master("local[*]").getOrCreate()import sparkSession.implicits._val words = sparkSession.read.textFile("/Users/BigData/Documents/data/wordcount.txt").flatMap(_.split(" ")).toDF("word")words.createOrReplaceTempView("wordcount")val df = sparkSession.sql("select word, count(*) count from wordcount group by word")df.show()}
}

更多干货抢先看: 世界格局的演变:一场“热闹非凡”的历史大戏

http://www.dtcms.com/a/425084.html

相关文章:

  • 第二章:安装部署与环境配置
  • 个人网站建设步骤学校怎么做网站
  • 南宁设计网站建设世界十大建筑设计事务所
  • 凌源网站优化如何做网站跳转
  • 做网站快速赚钱营销推广的目标
  • SSL证书有效期缩短至200天的影响
  • 中关村在线对比广州网站seo优化排名
  • 域名备案和网站备案有什么区别如何下载wordpress
  • 网站结构优化做网站公司 衡阳公司
  • PCIe协议之低功耗篇之 理论深度学习(二)
  • 伪网站建站郑州网站制作天强科技
  • 网站后台文章编辑器网站怎么做运营推广
  • C++语言编程规范-作用域、模板和 C++其他特性
  • 做网站应该注意哪些问题wordpress 同城
  • 中国建设银行行号查询网站wordpress 小工具代码
  • 酒店网站建设公司dz做网站
  • 学习日报 20250929|缓存雪崩以及缓存穿透解决方案
  • 济南行业网站开发wordpress主题chuxia
  • 殷氏科技网站建设工作室如何选择网站开发
  • 电影网站域名wordpress add_action do_action
  • 营销网站与企业网站的区别电商网站详细设计
  • 有哪些网站是织梦做的wordpress写接口
  • 织梦做企业网站apache安装WordPress
  • cdr可以做网站页面吗温岭网络推广公司
  • 微网站 html标点狗logo设计官网
  • 乐清站在哪网站建设价格与方案
  • 单位写材料素材网站营销建设网站
  • php5mysql网站开发实例精讲asp.net 4.0网站开发
  • 山东济铁工程建设集团有限公司网站wordpress树形导航菜单
  • 淘宝客导购网站建设房产信息网显示已备案