基于Spark的数据分析实践
对RegisterDataFrameAsTable的分析
通过单个 regiserDataFrameAsTable 项进行分析,SparkSQL 并不是把source 的数据立即计算把数据放到内存,而是每次执行 source 时只是生成了一个 Logical Plan,只有遇到需要提交的算子(Action),SparkSQL 才会触发前面所依赖的的 plan 执行。
总结
这是一个开发框架,不是一个成熟的产品,也不是一种架构。他只是基于 SparkSQL 整合了大多数的外部系统,能通过 XML 的模板配置完成数据开发。面向的是理解数据业务但不了解 Spark 的数据开发人员。整个框架完成了大多数的外部系统对接,开发者只需要使用 type 获得数据,完成数据开发后通过 target 回写到目标系统中。整个过程基本无须程序开发,除非当前的 SQL 函数无法满足使用的情况下,需要自行开发一下特定的 UDF。因此本框架在对 SparkSQL 做了二次开发基础上,大大简化了 Spark 的开发,可降低了开发者使用难度。
精选提问:
问1:和Fink平台有什么优势么?
答:Flink 应该对标 Spark Streaming 的解决方案,是另一种可选流数据引擎。Flink 也采用了 Scala 语言,内部原理和操作数据方式颇有相似之处,是 SparkStreaming 之外流数据处理一种选型。基于 SparkSQL Flow 的架构主要侧重批量数据分析,非实时 ETL 方面。
问2:这些应该是源数据库吧,请问目标数据库支持哪些?
答:目前的实现目标数据基本支持所有的源。
问3:你们产品是软件开发平台,spark和你们开发平台啥关系?
答:普元针对部分成熟场景提供了一些开发平台和工具,也在参与了一些大数据项目建设。对于大规模数据的数据报表,数据质量分析也需要适应大数据的技术场景,Spark 作为Hadoop 内比较成熟的解决方案,因此作为主要的选型工具。在参与部分项目实施过程中,通过对一些开发中的痛点针对性的提取了应用框架。
问4:对于ETL中存在的merge、update的数据匹配、整合处理,Spark SQL Flow有没有好的解决方法?
答:merge 和 update 在数据开发过程不可避免,往往对数据库造成较大压力。大数据场景下不建议逐条对数据做 update 操作,更好的办法是在数据处理阶段通过 join 把结果集在写入目标前准备好,统一一次性写入到目标数据库。查询操作通过换库使用新库,这中操作一般适合数据量比较大,数据更新频率较低的情况。如果目标库是 HBase 或者其他 MPP 类基于列式的数据库,适当的可以更新。但是当每天有 60% 以上的数据都需要更新时,建议还是一次性生成新表。
问5: blink和flink 应该如何选取?
答:blink 是阿里巴巴在 flink 基础上做了部分场景优化(只是部分社区有介绍,并不明确)并且开源,但是考虑到国内这些机构开源往往是没有持久动力的。要看采用 Blink 是否用了比较关键的特性。也有消息说 Blink 和 Flink 会合并,毕竟阿里 Dubbo 前期自己发展,后期还是捐给了 Apache,因此两者合并也是有可能。建议选型 Flink。
问6:etl 同步数据中主要用哪些工具?
答:这个要区分场景。传统数据库之间,可采用日志同步,也有部分成熟的工具;
传统数据库和Hadoop 生态内(HBase,HIVE) 同步可使用 apache sqoop。 SparkSQL Flow 可以作为数据同步的另一种方案,可用在实时性不高的场景。SparkSQL Flow 更侧重大数据工具,偏向数据分析和非实时 ETL。
最新活动更多
-
11月28日立即报名>>> 2024工程师系列—工业电子技术在线会议
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
-
精彩回顾立即查看>> 2024 智能家居出海论坛
-
精彩回顾立即查看>> 【在线会议】多物理场仿真助跑新能源汽车
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论