pyspark读取数据库性能优化

当数据量很大时,读取方式

dbtable写sql语句

dbtable和query配置不能同时存在,选一种即可。里面都可以直接写sql语句

jdbcDF = spark.read.format("jdbc")\.option("driver",driver)\.option("url",url)\.option("dbtable","(select * from my_table where class='01' and sex='M' )")\.option("user",user)\.option("password",password)\.load().select("org_code","operate_id")

如果dbtable是一个表,如果load()后进行where和select,都会把整张表加载进来,耗内存。直接写sql语句比较好。

并行方式读取数据库

一般来说,默认读数据库,numPartition是1。

以下代码使得读取数据库并行读是10。

jdbcDF = spark.read.format("jdbc")\.option("driver",driver)\.option("url",url)\.option("dbtable","(select * from my_table where class='01' and sex='F' )")\.option("user",user)\.option("password",password)\.option("numPartitions",10)\.option("partitionColumn","id")\.option("lowerBound",0)\.option("upperBound",100000).load().select("org_code","operate_id")

numPartitions是设置的最大分区数。(单独设置这一选项,没有设置partitionColumn,lowerBound,upperBound,我怎么试实际运行numPartitions值都是1。大概是spark不知道怎么分割分区)

partitionColumn,lowerBound,upperBound这三个选项必须同时设置。(upperBound-lowerBound)/numPartitions是步长。即使数据内容低于lowerBound,或高于upperBound,依然会把所有数据都加载进来。
比如设置partitionColumn为id列,lowerBound为100,upperBound为400,numPartitions为3,实际内容有小于100的,也有大于300的。
那么第一个分区是低于200的,第二个分区是[200,300),第三个分区是大于等于300的

partitionColumn列的值必须是numeric, date, 或 timestamp类型的。
如果是date类型,可以写.option("lowerBound","2023-01-01")
如果是timestamp类型,可以写.option("lowerBound","2023-01-01 00:00:00")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/195228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化测试的成本高效果差,那么自动化测试的意义在哪呢?

有人问:自动化测试的成本高效果差,那么自动化测试的意义在哪呢? 我觉得这个问题带有很强的误导性,是典型的逻辑陷阱之一。“自动化测试的成本高效果差”是真的吗?当然不是。而且我始终相信,回答问题的最…

COMP4121Advanced Algorithms

COMP4121Advanced Algorithms WeChat:yj4399_ Sina Visitor System

【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏)

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

【Java】集合 之 使用 TreeMap

TreeMap 我们已经知道,HashMap 是一种以空间换时间的映射表,它的实现原理决定了内部的Key是无序的,即遍历HashMap的Key时,其顺序是不可预测的(但每个Key都会遍历一次且仅遍历一次)。 还有一种Map&#xf…

数据结构之二叉树及面试题讲解

💕"从前种种譬如昨日死;从后种种譬如今日生"💕 作者:Mylvzi 文章主要内容:数据结构之二叉树及面试题讲解 一.概念 1.树的定义 树是一种非线性的数据结构,是由n个结点组成的一种非线性集合&…

Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同?

面试官:Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同? 开始之前 Composition API 可以说是Vue3的最大特点,那么为什么要推出Composition Api,解决了什么问题? 通常使用Vue2开发的项目&…

交流插座电器漏电断路器的低功耗控制芯片D4140,内置桥式整流器漏电灵敏度可调,采用SOP8和DIP8 的封装形式

D4140 是一种用于交流插座电器漏电断路器的低功耗控制器。这些设备可以检测到接地的危险电流路径,例如设备掉进水中。在发生有害或致命的电击之前,断路器会断开线路。内置有整流桥,齐纳管稳压器,运算放大器,电流基准&a…

论文阅读——Loss odyssey in medical image segmentation

Loss odyssey in medical image segmentation github:https://github.com/JunMa11/SegLossOdyssey 这篇文章回顾了医学图像分割中的20种不同的损失函数,旨在回答:对于医学图像分割任务,我们应该选择哪种损失函数? 首…

世岩清上:博物馆展览的叙事性设计

博物馆展览的叙事性设计是一种艺术与科学的结合,它通过将展品、灯光、布局和文本等元素进行精心策划和设计,以讲述一个引人入胜的故事,让参观者能够更深入地了解展览的主题和内容。 一、叙事性设计的关键要素 主题与目标 叙事性设计的第一步…

倾斜摄影三维模型的根节点合并的优势分析

倾斜摄影三维模型的根节点合并的优势分析 根节点合并是倾斜摄影三维模型处理中的一项重要技术,它具有许多优势,可以显著提升模型数据的处理效率和渲染性能。在本文中,我们将对倾斜摄影三维模型的根节点合并的优势进行详细分析。 1、数据大小…

1038. 从二叉搜索树到更大和树 --力扣 --JAVA

题目 给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下, 二叉搜索树 满足下列约束条件: 节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。…

计算机毕业设计|基于SpringBoot+SSM+MyBatis框架的迷你仿天猫商城购物系统设计与实现

计算机毕业设计|基于SpringBootMyBatis框架的仿天猫商城购物系统设计与实现 迷你仿天猫商城是一个基于SpringBootSSMMyBatis框架的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品&am…

家用小型洗衣机哪款性价比高?内衣洗衣机品牌推荐

近日,国内著名的电子商务平台公布了“内衣洗衣机产业趋势”的研究报告。该报告指出,由于消费者对生活质量的要求越来越高,内衣洗衣机的行业也有了长足的发展,特别是在今年以来,内衣洗衣机的销售额同比上涨了830%&#…

汽车音响静音检测电路芯片D3703F,6V~16V SOP8封装

D3703F 是一块汽车音响静 音检测电路。用于音 响系统检测在放音或快进/退时进行静音检测,电压范围: 6V~16V,信号检测和静音时间可通过外围电阻 、电容来改变。D3703F采用SOP8的封装形式封装 主要特点: 快进/退时也可进行静音 检测 信号检测…

BearPi Std 板从入门到放弃 - 引气入体篇(3)(上两篇前言)

GPIO调用函数 stm32l4xx_hal_gpio.h /* IO operation functions *****************************************************/ GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); // 读取GPIO状态 void HAL_GPIO_WritePin(GPIO_TypeDe…

小黄鸟(HTTPCanary)安装及Android高版本CA证书配置

小黄鸟(HTTPCanary)安装及Android高版本CA证书配置 HTTPCanary及CA证书安装 1.HTTPCanary下载2.导出CA证书3.安装CA证书 1.HTTPCanary下载 从下面链接下载安装HTTPCanary 链接: https://xiao6ming6.lanzouq.com/iQcB902w15pg 密码:4wby 2.导出CA证书 1.…

关于this和构造器的理解

1.类中的this关键字表示当前对象的引用。它可以被用于解决变量名冲突问题,或者在一个方法中调用类的另一个方法。如果在方法中没有明确指定要使用哪个变量,那么编译器就会默认使用this关键字来表示当前对象。 下面是一个输出this关键字的示例代码&#…

【MODBUS】Modbus 主从模式的部署方式

Modbus通信协议通常以主从(Master-Slave)模式进行部署,其中一个设备充当主站(Master),而其他设备充当从站(Slave)。主站负责发起请求,而从站则负责响应这些请求。下面是一…

初学者如何入门Generative AI:看两篇综述,玩几个应用感受一下先!超多高清大图,沉浸式体验

文章大纲 综述与简介从神经网络到Transformer不同种类的深度神经网络transformer 原理与解析BERTGPTTransformer 结构演化与应用历史transformer 在视觉上的应用AIGC 应用快速生成领域初级知识 PPT多人协作数字白板 + 图像生成本地部署大模型进行网站综述生成效果巨好的数字人!…

信息泄露威胁:日本科技巨头遭网络攻击,超40万条数据悬崖边缘!

11月27日下午,日本最主要通讯应用程序Line的运营商、日本LY公司发布公告称,有攻击者通过附属公司的NAVER Cloud系统访问了其内部服务器,可能泄露了数十万条包含用户、员工和业务合作伙伴在内的数据。 这一数据泄露事件发生在10月9日&#xff…