聊聊一种读取亿级Doris数据库的方法

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

主要参数介绍:

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列表自行控制范围。

作者:京东零售 赵奇猛

来源:京东云开发者社区

责任编辑:武晓燕 来源: 今日头条
相关推荐

2011-04-06 10:09:56

MySQL数据库安装

2018-09-27 16:15:10

区块链数据库

2012-03-14 11:46:30

ibmdw

2012-03-19 10:45:44

ibmdw

2021-06-11 00:11:23

GPS数据协议

2023-03-30 22:32:21

2018-12-14 14:30:12

安全检测布式系测试

2011-07-04 17:53:48

快速测试

2020-05-19 17:07:09

Spark测试数据计算

2022-04-20 08:00:00

深度学习数据集Hub

2010-03-26 13:34:47

CentOS安装

2022-09-23 07:44:48

时序数据库物联网

2023-01-26 00:18:53

云原生数据库云资源

2021-10-28 19:28:04

数据库开发Spring

2023-01-06 08:31:53

数据库基准测试

2024-10-12 15:29:56

2019-03-05 10:16:54

数据分区表SQLserver

2019-12-31 14:21:00

数据挖掘关系网络数据

2024-02-19 00:06:06

数据分析系统Doris

2018-02-08 08:11:41

点赞
收藏

51CTO技术栈公众号