返回顶部
首页 > 资讯 > 精选 >怎么自定义JDBCRDD的分区
  • 669
分享到

怎么自定义JDBCRDD的分区

2023-06-19 11:06:15 669人浏览 独家记忆
摘要

这篇文章主要讲解了“怎么自定义JDBCRDD的分区”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么自定义JDBCRDD的分区”吧!1,JDBCRDD使用val data = new Jdb

这篇文章主要讲解了“怎么自定义JDBCRDD的分区”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么自定义JDBCRDD的分区”吧!

1,JDBCRDD使用

val data = new JdbcRDD(sc, getConnection

, "SELECT id,aa FROM bbb where ? <= ID AND ID <= ?", lowerBound = 3, upperBound =5, numPartitions = 1, mapRow = extractValues)

参数解释:

1,sparkcontext。

2,一个创建链接的函数。

3,sql。必须有? <= ID AND ID <= ?。

4,要取数据的id最小行。

5,要取数据的id最大行号。

6,分区数。

7,一个将ResultSet转化为需要类型的方法。

2,JdbcRDD的getPartition方法

override def getPartitions: Array[Partition] = {
 // bounds are inclusive, hence the + 1 here and - 1 on end
 val length = BigInt(1) + upperBound - lowerBound
 (0 until numPartitions).map(i => {
   val start = lowerBound + ((i * length) / numPartitions)
   val end = lowerBound + (((i + 1) * length) / numPartitions) - 1
   new JdbcPartition(i, start.toLong, end.toLong)
 }).toArray
}

3,JdbcRDD的compute方法

就是一个通过jdbc获取指定范围数据的过程。

val part = thePart.asInstanceOf[JdbcPartition]
val conn = getConnection()
val stmt = conn.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
stmt.setLong(1, part.lower)
stmt.setLong(2, part.upper)
val rs = stmt.executeQuery()

4,重写JDBC方法

重写分区的方法即可。

如:

CustomizedJdbcRDD[T: ClassTag](
                                     sc: SparkContext,
                                     getConnection: () => Connection,
                                     sql: String,
                                     getCustomizedPartitions: () => Array[Partition],
                                     prepareStatement: (PreparedStatement, CustomizedJdbcPartition) => PreparedStatement,
                                     mapRow: (ResultSet) => T = CustomizedJdbcRDD.resultSetToObjectArray _)

同时把getPartition方法重写为:

override def getPartitions: Array[Partition] = {
 getCustomizedPartitions();
}

感谢各位的阅读,以上就是“怎么自定义JDBCRDD的分区”的内容了,经过本文的学习后,相信大家对怎么自定义JDBCRDD的分区这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 怎么自定义JDBCRDD的分区

本文链接: https://lsjlt.com/news/295714.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么自定义JDBCRDD的分区
    这篇文章主要讲解了“怎么自定义JDBCRDD的分区”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么自定义JDBCRDD的分区”吧!1,JDBCRDD使用val data = new Jdb...
    99+
    2023-06-19
  • ubuntu21.04系统怎么自定义分区安装?
    今天要在自己的一台笔记本电脑中安装最新的ubuntu21.04系统,但是这台电脑已经有其它操作系统以及文件,所以想选择个自定义的空闲的分区进行安装,这样就不用把文件拷贝出来了,该怎么实现呢?下面我们就拉看看详细的教程。 首先...
    99+
    2022-05-23
    ubuntu21.04 自定义分区 ubuntu安装
  • hadoop如何自定义分区
    今天小编给大家分享一下hadoop如何自定义分区的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。分区概念分区这个词对很多同学来...
    99+
    2023-06-29
  • hadoop全面解读自定义分区
    分区概念 分区这个词对很多同学来说并不陌生,比如Java很多中间件中,像kafka的分区,mysql的分区表等,分区存在的意义在于将数据按照业务规则进行合理的划分,方便后续对各个分区...
    99+
    2024-04-02
  • hadoop中mapreducez如何自定义分区
    这篇文章主要为大家展示了“hadoop中mapreducez如何自定义分区”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“hadoop中mapreducez如何自定义分区”这篇文章吧。packag...
    99+
    2023-06-02
  • win11怎么自定义分辨率
    这篇“win11怎么自定义分辨率”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win11怎么自定义分辨率”文章吧。win11...
    99+
    2023-06-30
  • 怎么理解spark的自定义分区和排序及spark与jdbc
    这篇文章将为大家详细讲解有关怎么理解spark的自定义分区和排序及spark与jdbc,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。//自定义分区import org.apache...
    99+
    2023-06-02
  • oracle表分区的定义是什么
    Oracle表分区是将表数据按一定的规则分割存储在不同的分区中,以提高查询性能和管理数据的效率。通过表分区,可以将表数据存储在不同的...
    99+
    2024-04-09
    oracle
  • db2 定义分区表和分区键
    下面,为了提高数据库性能,我们将不同的分区放到不同的表空间下。首先创建6个表空间,3个数据表空间,3个索引表空间:db2 "create tablespace ts_dat managed by ...
    99+
    2024-04-02
  • python自定义分页器怎么实现
    本篇内容介绍了“python自定义分页器怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自定义分页器封装代码封装分页相关数据::par...
    99+
    2023-06-30
  • Django自定义分页
    自定义分页 稳扎稳打版 def book(request): # 从URL取参数(访问的页码) page_num = request.GET.get("page") try: # 将取出的p...
    99+
    2023-01-30
    分页 自定义 Django
  • Android自定义组件:1、什么是自定义组件、自定义组件的方式、定义自定义属性
    声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!! 目录 一、前言 二、什么是自定义组件 三、自定义组件的方式 1、组合现有组件 2、在某...
    99+
    2022-06-06
    属性 自定义属性 Android
  • Hive中怎么定义和使用表分区
    在Hive中,表分区是按照表的某个列的值进行分割和存储数据的方式,可以提高查询效率和管理数据。以下是在Hive中定义和使用表分区的步...
    99+
    2024-04-03
    Hive
  • ASP.NET 中怎么利用DataGrid自定义分页
    这期内容当中小编将会给大家带来有关ASP.NET 中怎么利用DataGrid自定义分页,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。ASP.NET DataGrid自定义分页代码1using S...
    99+
    2023-06-17
  • 笔记本win11怎么自定义分辨率
    本篇内容介绍了“笔记本win11怎么自定义分辨率”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!笔记本win11自定义分辨率教程:首先点击wi...
    99+
    2023-07-02
  • Angular2怎么自定义validators
    这篇文章主要介绍“Angular2怎么自定义validators”,在日常操作中,相信很多人在Angular2怎么自定义validators问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • SpringBoot怎么自定义Starter
    这篇文章给大家分享的是有关SpringBoot怎么自定义Starter的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是StarterStarter是Spring Boot中的一个非常重要的概念,Starter...
    99+
    2023-06-22
  • django怎么自定义admin
    要自定义Django的admin界面,可以按照以下步骤进行:1. 创建一个继承自`django.contrib.admin.Mode...
    99+
    2023-10-08
    django
  • android怎么自定义viewgroup
    要自定义一个ViewGroup,你需要创建一个继承自ViewGroup的子类,并重写一些关键的方法来定义你的布局和子视图的排列方式。...
    99+
    2023-10-11
    android
  • Angular怎么自定义notification
    今天小编给大家分享一下Angular怎么自定义notification的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。效果图如...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作