怎样让spark定时读数据库数据

怎样让spark定时读数据库数据,第1张

RDD:AResilientDistributedDataset(RDD),thebasicabstractioninSpark.rdd是一个分布式的数据集,数据分散在分布式集群的各台机器上ADataFrameisequivalenttoarelationaltableinSparkSQL,andcanbecreatedusingvariousfunctionsinSQLContextdataframe更像是一张关系型数据表,是一种spark独有的数据格式吧,这种格式的数据可以使用sqlcontext里面的函数

在开发过程中使用spark去读取hive分区表的过程中(或者使用hive on spark、nodepad开发工具),部分开发人员未注意添加分区属性过滤导致在执行过程中加载了全量数据,引起任务执行效率低、磁盘IO大量损耗等问题

1、自定义规则CheckPartitionTable类,实现Rule

然后通过此种方法创建SparkSession

2、自定义规则CheckPartitionTable类,实现Rule,将规则类追加致Optimizer.batches: Seq[Batch]中

1、CheckPartitionTable规则执行类,需要通过引入sparkSession从而获取到引入conf;需要继承Rule[LogicalPlan];

2、通过splitPredicates方法,分离分区谓词,得到分区谓词表达式

在sql解析过程中将谓词解析为TreeNode,此处采用递归的方式获取分区谓词

3、判断是否是分区表,且是否添加分区字段

4、实现Rule的apply方法

关于spark-sql的主要执行流程及预备知识,可参照我同学的这篇博文 https://www.jianshu.com/p/4cc6797fb9ce


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10015752.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存