1. 工作中,常常需要将线上doris同步至集市。读取doris数据同读取常规mysql基本相同。如果数据行小于千万,比较简单的方式直接单节点连接、读取和存储。Python示例如下:
  1. def get_data(sql,host='',port=2000,user='',password='',db=''):
  2. # 支持doris
  3. import pymysql
  4. connect = pymysql.connect(host=host,port=port,user=user,password=password,db=db,charset='utf8')
  5. cursor = connect.cursor()
  6. cursor.execute('SET query_timeout = 216000;') #单位秒
  7. cursor.execute(sql)
  8. result = cursor.fetchall()
  9. for row in result:
  10. pass # 存储格式可以自行控制
  11. cursor.close()
  12. connect.close()
  13. return result
  1. 如果数据量比较大,超过千万,甚至过亿,单节点读取会遇到超时以及时效过低的问题。可以使用spark.read.jdbc分布式多节点并发读取。spark读取支持两种方式。

主要参数介绍:

  1. read.jdbc(url=url,table=remote_table,column='item_sku_id',numPartitions=50,lowerBound=lowerBound, upperBound=upperBound,properties=prop)

url:格式如'jdbc:mysql://**.jd.com:2000/数据库名?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai'

table:可以是表名,也可以是查询sql(也即支持条件查询),如果是sql,格式如"(SELECT count(*) sku FROM rule_price_result where dt='2023-05-10') AS tmp"

numPartitions:控制并发节点个数

lowerBound+upperBound和properties二选一,控制每个节点读取的数据范围。

lowerBound+upperBound方式:指定读取最低和最高值,spark会结合分区个数和最低最高边界机械做分割。

如果数据分布有倾斜,可以通过predicates列表自行控制范围。

作者:京东零售 赵奇猛

来源:京东云开发者社区

一种读取亿级doris数据库的方法的更多相关文章

  1. mysql搭建亿级cmd5数据库,毫秒级查询 完全过程

    前言: 最近也在玩数据库,感觉普通机子搞数据库,还是差了点,全文查找,慢的要查一分钟更久. 但是搞cmd5库很不错,亿级数据库,毫秒级. qq 944520563好吧,下面开始,首先你得需要一个mys ...

  2. 陈宏智:字节跳动自研万亿级图数据库ByteGraph及其应用与挑战

    导读: 作为一种基础的数据结构,图数据的应用场景无处不在,如社交.风控.搜广推.生物信息学中的蛋白质分析等.如何高效地对海量的图数据进行存储.查询.计算及分析,是当前业界热门的方向.本文将介绍字节跳动 ...

  3. PHP两种实现无级递归分类的方法

    /** * 无级递归分类 TP框架 * @param int $assortPid 要查询分类的父级id * @param mixed $tag 上下级分类之间的分隔符 * @return strin ...

  4. mysql 客户无感知迁移_亿级账户数据迁移,不用数据库工具还能怎么搞?

    原标题:亿级账户数据迁移,不用数据库工具还能怎么搞? 背景 在阿里巴巴内部"大中台,小前台"的组织和业务体制,使前线业务更加敏捷,赋能业务积极迎接未来挑战和机遇,在阿里大中台能力建 ...

  5. cassandra百亿级数据库迁移实践

    迁移背景 cassandra集群隔段时间出现rt飙高的问题,带来的影响就是请求cassandra短时间内出现大量超时,这个问题发生已经达到了平均两周一次的频率,已经影响到正常业务了.而出现这些问题的原 ...

  6. 横瓜先生如何用MDB和XLS等低性能数据库来处理千亿级数据量。

    横瓜先生如何用MDB和XLS等低性能数据库来处理千亿级数据量. 横瓜先生曾经用ACCESS做数据库,开发出高性能CMS来处理过TB级的文本数据量,任何请求都可以在10MS内完成,基本就是硬盘延迟的时间 ...

  7. 横瓜先生关于如何利用MYSQL数据库设计CMS系统处理100亿级TB规模的数据量

    遥执乾坤(44758121)  18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个字段就算用索引,也需要扫描至少100w以上记录. 横瓜(601069289)  1 ...

  8. 从100PV到1亿级PV网站架构演变

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 一个网站就像一个人,存在一个从小到大的过程.养一个网站和养一个人一样,不同时期需要不 ...

  9. 亿级流量场景下,大型缓存架构设计实现【1】---redis篇

    *****************开篇介绍**************** -------------------------------------------------------------- ...

  10. [转载]从100PV到1亿级PV网站架构演变

    原文地址:http://www.uml.org.cn/zjjs/201307172.asp 一个网站就像一个人,存在一个从小到大的过程.养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有 ...

随机推荐

  1. 从零开始学习python | 实例讲解如何制作Python模式程序

    摘要:在本文中,我们将学习python中的各种模式程序. Python编程语言很容易学习.易于语法实现的各种库使其脱颖而出,这是它成为本世纪最流行的编程语言的众多原因之一.虽然学习很容易,但访问员通常 ...

  2. 线下Meetup:在数智化转型背景下,火山引擎VeDI的大数据技术揭秘

     更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   近日,联合火山引擎开发者社区,火山引擎数智平台(VeDI)<数智化转型背景下的火山引擎大数据技术揭秘& ...

  3. 克服 ClickHouse 运维难题:ByteHouse 水平扩容功能上线

    前言 对于分析型数据库产品,通过增加服务节点实现集群水平扩容,并提升集群性能和容量,是运维的必要手段. 但是对于熟悉 ClickHouse 的工程师而言,听到"扩容"二字一定会头疼 ...

  4. Solon2 开发之IoC,七、切面与函数环绕拦截

    想要环绕拦截一个 Bean 的函数.需要三个前置条件: 通过注解做为"切点",进行拦截(不能无缘无故给拦了吧?费性能) Bean 的 method 是被代理的 在 Bean 被扫描 ...

  5. C# 写日志文件

    常用方法: public class FileHelper { private static void Write(string fileName, byte[] bytes) { FileStrea ...

  6. AtCoder Beginner Contest 335 总结

    ABC335总结 A.202<s>3</s> 翻译 给你一个由小写英文字母和数字组成的字符串 \(S\). \(S\) 保证以 2023 结尾. 将 \(S\) 的最后一个字符 ...

  7. 【Git】git多分支开发 git远程仓库 ssh链接远程仓库 协同开发 冲突解决 线上分支合并 pycharm操作git 远程仓库回滚

    目录 昨日回顾 1 git多分支开发 分支操作 合并分支 2 git远程仓库 2.1 把路飞项目传到远程仓库(非空的) 3 ssh链接远程仓库,协同开发 4 协同开发 5 冲突解决 5.1 多人同一分 ...

  8. OJ中的语言选项里G++ 与 C++的区别

    概念上: C++是一门计算机编程语言,而G++则是C++的编译器. GCC和G++都是GUN的编译器,cc是Unix系统的C Compiler,而gcc则是GNU Compiler Collectio ...

  9. 0x61 图论-最短路

    B题 Telephone Lines https://ac.nowcoder.com/acm/contest/1055/B 中文题面:https://www.luogu.com.cn/problem/ ...

  10. 2.5D 组态案例合集 | 智慧园区、数据中心、SMT 生产线、汽车制造

    在阅读文章之前,大家可以思考下 2.5D 设计属于哪种界定? 2.5D 是通过二维的元素来呈现出三维的效果.其实在国外并没有 2.5D 这样的称呼,标准说法是 Isometric 风格,翻译过来就是等 ...