前期博主有写过spark同步数据的博文,当时由于业务需求相对简单,只简单的实现了单表load功能。业务的发展驱动着技术的不段革新,猿猿们也在不断设计更加合理更加便捷更加优雅的业务模块,只是为了让你们用的爽用的简单~~~
背景
假设我们现在需要借助spark同步如下
select t.id as id ,t.title as title ,t.created as created,t.keywords as keywords,c.content as content,t.categoryid as categoryid,t.is_recommend as is_recommend
from tcrm_kms t ,tcrm_kms_con c where t.id = c.kms_id and t.isdelete = 0
数据以一定的业务格式需要同步至hdfs或者其他文件系统,该怎么做呢?
大家可以回忆下大数据时代数据同步之SPARK实现(一)中的内容,spark威武雄壮之处在于其1.0版本内提供了很友好的sqlcontext,dataset api,这也就意味着你只要会写sql,就可以很好的驾驭spark成为大数据开发工程师。
spark 1.0版本我们是这样写的:
val sparkConf = new SparkConf().setAppName("ant").setMaster("local[1]")
val sc = new SparkContext(sparkConf)
val sqlContext = new SQLContext(sc)
spark在2.0版本提供了sparksession,sparksession其实是sqlcontext和hivecontext的组合,内部封装了soarkcontext,计算还是交由sparkcontext完成的。我们是这样写的:
val sparkSession = SparkSession.builder.master("loacl[1]").appname("ant").getOrCreate()
工程化
配置文件
<config>
<conf>
<sparkMaster>local[1]</sparkMaster>
<sparkJarsPath>jar地址</sparkJarsPath>
<sparkConf>spark.executor.memory,15G;</sparkConf>
<filePath>保存文件地址</filePath>
</conf>
<table>
<!--是否执行 0表示执行-->
<