pyspark连接clickhouse数据库的方式(其它数据库同样适用)

embedded/2025/1/21 12:22:45/

目录

  • 一、背景简记
  • 二、pyspark连接clickhouse方式记录
  • 三、结语
  • 参考学习博文

一、背景简记

实际工作中,大部分所用的数据存储地址都是在数据库中,如我司现在常用的数据库clickhouse,相关数据的统计分析都在此上操作。如果想用pyspark连接clickhouse数据库怎么办呢,经过博主的一番探索,由此衍生了本文。
当然,本文连接clickhouse数据库的方式,同样可以衍生使用与mysql、Oracle,postgre数据库等。

在这里插入图片描述

clickhouse_10">二、pyspark连接clickhouse方式记录

如果按照上一篇博文《Windows环境本地配置pyspark环境详细教程》,安装配置好了本地pyspark环境,则本地连接clickhouse数据库的脚本示例如下。

  • 文件 clickhouse-jdbc-0.6.1.jar》 是本地连接clickhouse数据库的驱动,这在通过DBeaver或者Navicat连接clickhouse数据库时,即会下载该驱动,因此使用使用搜索确认下该文件地址路径即可。
  • 脚本中相关注释掉的代码,如果本地未设定jdk、spark环境变量,可以在脚本中内置指定其路径。
  • 标*的为数据库的ip地址和连接的数据库名称,实际根据情况填写即可。
python"># import findspark
# findspark.init() # 初始化本地环境import os
from pyspark.sql import SparkSession
# 设置环境变量
# os.environ["JAVA_HOME"] = "D:/JDK" # 手动指定jdk安装位置
# os.environ["SPARK_HOME"] = "D:/bigdataenv/spark-3.5.0-bin-hadoop3" # 手动指定spark安装位置
# os.environ['PYSPARK_SUBMIT_ARGS'] = '--master local[*] --conf spark.driver.memory=4g --conf spark.executor.memory=2g --conf spark.driver.extraJavaOptions=-Djava.library.path="D:/JDK/bin" pyspark-shell' # 相关提交信息设置,注意其中含有jdk位置# 创建 SparkSession
spark = SparkSession.builder \.appName("ClickHouse Connection") \.config("spark.jars", "file:///C:/Users/Administrator/AppData/Roaming/DBeaverData/drivers/maven/maven-central/com.clickhouse/clickhouse-jdbc-0.6.1.jar") \.getOrCreate()# 获取 SparkContext
sc = spark.sparkContext# 设置日志级别
sc.setLogLevel("ERROR")# # 测试 SparkSession 是否正常工作
# df = spark.createDataFrame([(1, 'foo'), (2, 'bar')], ['id', 'value'])# ClickHouse连接参数
clickhouse_url = "jdbc:clickhouse://**.**.**.**:8123/sj**"
properties = {"user": "default","password": "123456","driver": "com.clickhouse.jdbc.ClickHouseDriver"
}# 读取数据
df = spark.read.jdbc(url=clickhouse_url, table="ods_bt_base_dict", properties=properties)df.show() 
spark.stop()

结果如下图所示:
在这里插入图片描述


记录一个本地测试的示例:

python">import findspark
findspark.init() 
# findspark.init(spark_home="D:\\bigdataenv\\\spark-3.5.0-bin-hadoop3") #  # 自动查找 SPARK_HOMEfrom pyspark.sql import SparkSession# 创建 Spark 会话
spark = SparkSession.builder \.appName("Test PySpark") \.master("local[*]") \.getOrCreate()# 打印 Spark 会话信息
print("Spark version:", spark.version)# 创建一个 DataFrame
data = [("Alice", 34), ("Bob", 45), ("Cathy", 29)]
columns = ["Name", "Age"]
df = spark.createDataFrame(data, columns)# 显示 DataFrame
df.show()# 停止 Spark 会话
spark.stop()

执行结果如下:
在这里插入图片描述

三、结语

总体来说,pyspark的数据提取方式,和python的语言逻辑,还是有较大差别,需要勤加练习。
在这里插入图片描述

参考学习博文

《Windows环境本地配置pyspark环境详细教程》


http://www.ppmy.cn/embedded/155766.html

相关文章

【三国游戏——贪心、排序】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; const int N 1e510; int a[N], b[N], c[N]; int w[4][N]; int main() {int n;cin >> n;for(int i 1; i < n; i)cin >> a[i];for(int i 1; i < n; i)cin >> b[i…

【玩转全栈】----Django制作部门管理页面

大致效果 我先给个大致效果&#xff0c;基本融合了Django、Bootstrap、css、html等等。 基于Django的部门管理系统 BootStrap BootStrap简介 Bootstrap 是一个由 Twitter 团队开发的开源前端框架&#xff0c;专注于帮助开发者快速构建响应式和现代化的网页。它基于 HTML、CSS …

Linux测试处理fps为30、1920*1080、一分钟的视频性能

前置条件 模拟fps为30、1920*1080、一分钟的视频 项目CMakeLists.txt cmake_minimum_required(VERSION 3.30) project(testOpenGl)set(CMAKE_CXX_STANDARD 11)add_executable(testOpenGl main.cpptestOpenCl.cpptestOpenCl.hTestCpp.cppTestCpp.hTestCppThread.cppTestCppTh…

uniapp 自定义日历组件 源码

效果图&#xff1a; 一、问题1&#xff1a;每个月的1号&#xff0c;样式上的起始位置 样式上来说实际困难点在于每个月的1号对应的位置&#xff1a; 解决方式就是判断1号是周几&#xff0c;就在前面放几个空盒子&#xff0c; 二、问题2 : 状态样式控制 定义一个结构来存储…

vue使用教程

‌Vue.js主要基于MVVM模式&#xff08;Model-View-ViewModel&#xff09;和观察者模式‌。MVVM模式是Vue.js的核心设计模式&#xff0c;它将应用程序的数据&#xff08;Model&#xff09;、用户界面&#xff08;View&#xff09;和业务逻辑&#xff08;ViewModel&#xff09;分…

使用 Parcel 和 NPM 脚本进行打包

使用 Parcel 和 NPM 脚本进行打包 Parcel Parcel 是一个零配置的网页应用程序打包工具&#xff0c;主要用于快速构建现代 JavaScript 应用。 我们可以使用npm直接安装它 npm install --save-dev parcel //这将把 Parcel 添加到 devDependencies 中&#xff0c;表明它是一个…

【Leetcode 热题 100】70. 爬楼梯

问题背景 假设你正在爬楼梯。需要 n n n 阶你才能到达楼顶。 每次你可以爬 1 1 1 或 2 2 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 数据约束 1 ≤ n ≤ 45 1 \le n \le 45 1≤n≤45 解题过程 昨天刚刚当成扩展题做过&#xff0c;今天遇到了再写一次。…

C++,设计模式,【目录篇】

文章目录 1. 简介2. 设计模式的分类2.1 创建型模式&#xff08;Creational Patterns&#xff09;&#xff1a;2.2 结构型模式&#xff08;Structural Patterns&#xff09;&#xff1a;2.3 行为型模式&#xff08;Behavioral Patterns&#xff09;&#xff1a; 3. 使用设计模式…