java jdbcrdd_鸡肋的JdbcRDD
今天准备将mysql的数据倒腾到RDD,很早以前就知道有一个JdbcRDD,就想着使用一下,结果发现却是鸡肋一个。
首先,看看JdbcRDD的定义:
* An RDD that executes an SQL query on a JDBC connection and reads results.
* For usage example, see test case JdbcRDDSuite.
*
* @param getConnection a function that returns an open Connection.
* The RDD takes care of closing the connection.
* @param sql the text of the query.
* The query must contain two ? placeholders for parameters used to partition the results.
* E.g. "select title, author from books where ? <= id and id <= ?"
* @param lowerBound the minimum value of the first placeholder
* @param upperBound the maximum value of the second placeholder
* The lower and upper bounds are inclusive.
* @param numPartitions the number of partitions.
* Given a lowerBound of 1, an upperBound of 20, and a numPartitions of 2,
* the query would be executed twice, once with (1, 10) and once with (11, 20)
* @param mapRow a function from a ResultSet to a single row of the desired result type(s).
* This should only call getInt, getString, etc; the RDD takes care of calling next.
* The default maps a ResultSet to an array of Object.
*/
class JdbcRDD[T: ClassTag](
sc: SparkContext,
getConnection: () => Connection,
sql: String,
lowerBound: Long,
upperBound: Long,
numPartitions: Int,
mapRow: (ResultSet) => T = JdbcRDD.resultSetToObjectArray _)
附上个例子:
package test
import java.sql.{Connection, DriverManager, ResultSet}
import org.apache.spark.rdd.JdbcRDD
import org.apache.spark.{SparkConf, SparkContext}
object spark_mysql {
def main(args: Array[String]) {
//val conf = new SparkConf().setAppName("spark_mysql").setMaster("local")
val sc = new SparkContext("local","spark_mysql")
def createConnection() = {
Class.forName("com.mysql.jdbc.Driver").newInstance()
DriverManager.getConnection("jdbc:mysql://192.168.0.15:3306/wsmall", "root", "passwd")
}
def extractValues(r: ResultSet) = {
(r.getString(1), r.getString(2))
}
val data = new JdbcRDD(sc, createConnection, "SELECT id,aa FROM bbb where ? <= ID AND ID <= ?", lowerBound = 3, upperBound =5, numPartitions = 1, mapRow = extractValues)
println(data.collect().toList)
sc.stop()
}
}
使用的MySQL表的数据如下:
运行结果如下:
可以看出:JdbcRDD的
sql参数要带有两个?的占位符,而这两个占位符是给参数
lowerBound和参数
upperBound定义where语句的边界的,如果仅仅是这样的话,还可以接受;但悲催的是
参数
lowerBound和
参数
upperBound都是Long类型的,
,不知道现在作为关键字或做查询的字段有多少long类型呢?不过参照JdbcRDD的源代码,用户还是可以写出符合自己需求的JdbcRDD,这算是不幸中之大幸了。
最近一直忙于炼数成金的spark课程,没多少时间整理博客。特意给想深入了解spark的朋友推荐一位好友的博客
http://www.cnblogs.com/cenyuhai/ ,里面有不少源码博文,利于理解spark的内核。
java jdbcrdd_鸡肋的JdbcRDD相关推荐
- Spark与Mysql(JdbcRDD)整合开发
在Spark中提供了一个JdbcRDD类,该RDD就是读取JDBC中的数据并转换成RDD,之后我们就可以对该RDD进行各种的操作.我们先看看该类的构造函数: JdbcRDD[T: ClassTag]( ...
- AJPFX讲解Java 性能优化[4]:关于 finalize 函数
★finalize 函数的调用机制 俺经常啰嗦:"了解本质机制的重要性".所以今天也得先谈谈 finalize 函数的调用机制.在聊之前,先声明一下:Java虚拟机规范(见&quo ...
- Spark-Core基础练习题30道
Spark-Core练习题 1.创建一个1-10数组的RDD,将所有元素*2形成新的RDD val inputRDD = sc.parallelize(1 to 10) val newRDD = in ...
- spark Java oracle,spark2.x由浅入深深到底系列六之RDD java api用JdbcRDD读取关系型数据库...
课程咨询以及领取大额优惠请加微信:bigdatatang01 以下是用spark RDD java api实现从关系型数据库中读取数据,这里使用的是derby本地数据库,当然可以是mysql或者ora ...
- 淘宝整点下单java实现(简单鸡肋)
淘宝整点下单java实现(简单鸡肋) 一.下载chrome浏览器驱动 二.脚本配置和代码 三.用法步骤 一.下载chrome浏览器驱动 查看chrome浏览器版本和操作系统版本,下载相应驱动版本 ht ...
- java三国kill_蓝牙三国Kill:这算不算是鸡肋?
其实三国杀官方开发的Java.Android.iOS的版本都早就发布了,那这款在与最近又特地从JAVA移植到Android平台的蓝牙三国Kill算不算是食之无味弃之可惜的鸡肋呢?看看就知道了. 平台: ...
- Java泛型真的是鸡肋吗?
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:286945438 我们一起学Java! 今天遇到一个小问题,让我感觉Java的泛型 ...
- 不少Java程序员都觉得Lambda表达式很鸡肋,它到底有何用呢?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:https://urlify.cn/B3uiI3 # 什么是 ...
- java 跨平台很鸡肋,Mac 篇八:Mac上的这个软件看起来很鸡肋,其实很牛很强大
Mac 篇八:Mac上的这个软件看起来很鸡肋,其实很牛很强大 2019-11-26 11:37:36 8点赞 42收藏 1评论 用了很多年Mac,可能这个应用都没有注意到,看起来不起眼,其实用好它,不 ...
最新文章
- 【腾讯面试题】熊出没
- 大型分布式C++框架《四:netio之请求包中转站 上》
- ubuntu修改mongodb的数据库储存位置
- php libxml 宝塔,宝塔编译安装各个版本php无法安装
- TIOBE 10月编程语言排行榜 : GO 问鼎本年度语言 ?
- SpringBoot2.1.5(18)--- 国际化配置,SpringBoot Locale 国际化使用方法
- Go 存储基础 — 内存结构体怎么写入文件?
- 技术大佬:我去,你写的 switch 语句也太老土了吧!
- 改善代码质量的编程规范
- 抓包工具之fiddler
- 入门OJ 1256【排队】
- 比较两个文本差异,直接显示两个文本的相同点与不同点
- Android涂鸦简单制作
- stm32不使用外部晶振管脚怎么处理_stm32103如果不用32k晶振,那引脚是悬空还是接地?...
- JavaEE实现微博项目(含注册、登录、发表微博、评论微博、关注博主、阅读排行榜、评论排行榜等功能)
- MySQL系列----创建函数
- nba全明星java_2018nba全明星阵容
- 非侵入性脑刺激和太空探索
- 公司出路:与速达ERP合作设想
- 给vscode设置背景图片~~贼好用
热门文章
- 为什么要做微信小程序
- 用php做论坛头像代码,详细介绍PHP针对多用户实现头像更换代码示例
- mysql root用户不存在_MySQL – 解决root用户下仍然出现权限问题-无法建库
- 研招网显示服务器错误,研招网2019考研调剂系统常见问题(一)
- Odoo与浪潮合资研发PS Cloud之如何使用产品变体
- firemonkey开发app(手势gesture)
- 4-TDengine图形化管理工具TDengineGUI与IDEA插件
- unturned最新版怎么创建服务器,unturned自己建立服务器大厅方法指引
- 有没有软件自动测试安装软件,驱动检测安装工具
- Redis 源码分析-数据结构及实现(字典dict)