1、流式数据处理在百度数据工厂应用与实践CONTENT 目录A 百度数据工厂介绍B 流式数据处理在百度数据工厂的应用C 流式数据处理在百度的实践D 总结PART A百度数据工 厂介绍百度数据工厂的发展史AHive1.离线批量数据分析2.PB级别查询3.核心数据报表产出Spark1.6数据工厂1.数据挖掘分析2.数据实时分析3.数据复杂处理1.统一元数据管理2.统一计算资源调度3.统一计算引擎支持4.多种作业提交方式5.安全管理百度数据工厂整体介绍A集成数据加工处理环境工作空间工作流调度流式作业计算大数据计算引擎统一存储访问(统一元数据管理)统一计算资源调度引擎HDFS/BOSJDBCHBase/K
2、afkaHiveYarnK8SStandaloneVM百度内部日例行任务数:10W+日传输量:8PB+应用业务数:200+ToB瑞声、大地等多家大型企业PART B流式数据处理在百度数据工厂应用Spark流式SQL问题实时转离线问题实时转大屏展示问题Spark流式SQL问题PART BSpark未提供流式SQLBspark.read.format(“json”).option(.).load().select().write.format(“csv”).save(outputPath)spark.readStream.format(“kafka”).load().select().writeS
3、tream.format(“csv”).start()批量Query流式Queryinsert into csv_table select*from json_table?APISQL从流式API到流式SQL语法的定义B1.数据源映射1.读取数据源-读取表2.写入数据源-写入表2.数据处理映射1.数据处理-SELECT/JOIN/UNION等3.增加Stream关键字1.区分批量SQL和流式SQLinsert into csv_table select stream*from kafa_tablespark.readStream.format(“kafka”).load().select().
4、writeStream.format(“csv”).start()流式SQL的统一元数据存储Bcreate table kafka_table(name string)using kafka options()MetaTableSchemaParametersStorage Properties .以Properties存储数据源配置保证表的通用性1.一张表对应于一个数据源1.多个数据源会影响通用性2.只能定义通用配置1.例如:watermark配置并不是通用配置,不能定义在表内3.允许流批2种方式读取1.当带stream关键字时,表被翻译为流式读取;反之则翻译为批量读取流式SQL语义层解析B
5、insert into hive_table select stream*from kafa_tableSQLStreamingSink+-Project*+-StreamingRelation()1.更新语义解析规则1.FindDataSource1.完成流式表解析2.UnresolvedCatalogRelation-StreamingRelation3.InsertIntoTable-SQLStreamingSink2.增加可执行类1.SQLStreamingSink1.负责触发流式任务执行2.解析流式配置Stream Join Batch语义解析问题Binsert into csv_t
6、able select stream*from kafka_table t1join mysql_table t2on t1.id=t2.p_idSQLStreamingSink+-Project*+-Join(t1.id,t2.p_id)+-Alias t1 +-StreamingRelation +-Alias t2 +-StreamingRelation典型场景:实时统计工厂工人生产速度,对Kafka(实时生产数据)和MySQL(员工数据)做join分析,从而获得每段时间内每个工人的产量。按照目前的设计,在语义解析过程中,mysql_table会解析成StreamingRelation,