IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Spark与Scala连接Postgre库 -> 正文阅读

[大数据]Spark与Scala连接Postgre库

在开发spark过程中,遇到需要连接postgres库的场景,可以通过原生的jdbc去连接,也可以使用spark直连。

1.scala 原生jdbc连接

下面是 通过DriverManager连接pg

try{
// 将用户名密码加入properties
val conn_prop = new Properties()
conn_prop.put("user","xxxx")
conn_prop.put("password","xxxx")
//pg库的连接串:'xxxx'是库名
val conn_url = "jdbc:postgresql://127.0.0.1:5432/xxxx"
//连接
val con:Connection = DriverManager.getConnection(conn_url,conn_prop )
//创建statement
//查询
val query_stm:Statement = con.createStatement()
val rs1= query_stm.excuteQuery("select id,name,money from test_zero where id<1")
while(rs1.next()){
	val r_id = rs1.getInt("id")
	val r_name = rs1.getString("name")
	val r_sex = rs1.getDouble("money")
	println(r_id+","+r_name+","+r_money)
}
//更新
val update_stm:Statement = con.createStatement()
val rs2 = update_stm.excuteUpdate("update test_zero set name='zero_update',money=100000.00 where name='zero'")
}
finally{
   conn.close()
}

下面是 通过Spark直接连接pg,有两种方式

//创建spark
val conf  = new SparkConf().setAppName("conncetPG").setMaster("local[*]")
val spark = SparkSession.builder().config(conf).getOrCreate()
/**
 * 第一种:spark.read.jdbc()
 */
val conn_prop = new Properties()
conn_prop.put("user","xxxx")
conn_prop.put("password","xxxx")
conn_prop.put("driver","org.postgresql.Driver")
val df1 = spark.read.jdbc(url="jdbc:postgresql://127.0.0.1:5432/xxxx",table="test_zero",conn_prop) 
df.select("id","name","money").show()
/**
 * 第二种:spark.read.format("jdbc").option()
 */
 val df2 = spark.read
 		.format("jdbc")
 		.option("url","jdbc:postgresql://127.0.0.1:5432/xxxx")
 		.option("dbtable","test_zero")
 		.option("user","xxxx")
 		.option("password","xxxx")
 		.load()
 //对插叙结果进行过滤操作
 val n_df2 = df2.select("id","name","money").filter("name='zero'")
 //创建临时表,这样可以直接使用spark.sql()
 n_df2.createOrReplaceTempView("tmp_test_zero")
 //执行sparksql
 spark.sql("select * from tmp_test_zero where name like '%zero%'").show()



  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:53:02  更:2021-07-28 07:53:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 20:57:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码