版本spark3.0.0,总结来源官网以及开发过程中的实验所得。
背景,做的一个实时项目,通过测试发现数据更新速度在15s左右,完全不能满足要求,领导要求查找可以优化的地方,对整个链路进行拆分研究,优化代码
链路为kafka->structure streaming->hbase
测试方法:
虚机
--num-executors 10 --executor-cores 3 \
--driver-memory 4g --executor-memory 6g \
--total-executor-cores 30 \
测试方法,数据源为kafka,输出写入hbase。
造数采用kafka批量写入数据,structure streaming进行消费处理,处理逻辑,关联一个维表,然后统计条数。区别于官网的worldcount。
代码结构
def main(args: Array[String]): Unit = {
//创建spark session
val spark = SparkSession.builder
.appName("jcTables_37")
// .master("local[4]")
.config("spark.sql.warehouse.dir",directory1)
.getOrCreate()
//读取mysql的维表数据
val url = MysqlUtil.url
val properties = MysqlUtil.properties
val tn1 = "b_mapping_siteclerk"
spark.read.jdb