当前位置: 首页 > news >正文

mac安装Pyspark并连接Mysql

  1. 安装Scala, apache-spark, Hadoop
brew install scala
brew install apache-spark
brew install hadoop
pip install pyspark

注意不要自己另外安装jdk, 会造成版本对不上报错。因为安装apache-spark的过程中会自动安装openjdk。

  1. 配置环境变量
JAVA_HOME=/opt/homebrew/Cellar/openjdk@11/11.0.26/libexec/openjdk.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
export JAVA_HOME

SCALA_HOME=/opt/homebrew/opt/scala
export PATH=$PATH:$SCALA_HOME/bin

export SPARK_PATH=/opt/homebrew/Cellar/apache-spark/3.5.4
export PATH=$PATH:$SPARK_PATH/bin

export openjdk_home=/opt/homebrew/Cellar/openjdk@17/17.0.14


HADOOP_HOME=/opt/homebrew/Cellar/hadoop/3.4.1
export PATH=$PATH:/$HADOOP_HOME/bin

注意jdk版本不对会造成Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.: java.lang.UnsupportedOperationException: getSubject is supported only if a security manager is allowed

  1. 下载jdbc driver
    链接, 选择 Platform Independent

将下载的解压包中的jar文件拷贝到apache-spark的目录下: /opt/homebrew/Cellar/apache-spark/3.5.4/libexec/jars

  1. 使用如下代码来测试
from pyspark.sql import SparkSession
from pyspark import SparkContext

# sc = SparkContext.getOrCreate()

sparkdriver = SparkSession.builder.\
    appName('demo').\
    master('local[*]').\
    config('spark.driver.extraClassPath', '/opt/homebrew/Cellar/apache-spark/3.5.4/libexec/jars/mysql-connector-j-9.2.0.jar').\
    getOrCreate()
    
df_mysql = sparkdriver.read.format('jdbc').\
    option('url', 'jdbc:mysql://localhost:3306').\
    option('driver', 'com.mysql.jdbc.Driver').\
    option('user', 'root').\
    option('password', '123').\
    option('query', 'select * from tablename').\
    load()

df_mysql.show(10)

Connect MySQL with PySpark using JDBC Connector (Mac 2022)

http://www.dtcms.com/a/23917.html

相关文章:

  • 基于TI的TDA4高速信号仿真条件的理解 4.6
  • 浏览器报错:无法访问此网站 无法找到xxx.xxx.net的DNS地址。正在诊断该问题。尝试运行Windows网络诊断。DNS_PROBE_STARTED
  • 另一棵树的子树
  • Ubuntu下mysql主从复制搭建
  • C#: 创建Excel文件并在Excel中写入数据库中的数据
  • 【Python项目】文本相似度计算系统
  • IOT通道MQTT
  • 代码随想录算法营Day42 | 322. 零钱兑换,279. 完全平方数,139. 单词拆分
  • STM32 定时器产生定周期方法
  • 上位机知识篇---与、或、移位操作(、|、>><<)
  • AOSP Android14 部分页面使用触摸会崩溃
  • 视频转序列帧
  • 巧用 PasteMate,联合 DeepSeek 与 LaTeX 高效生成 PDF 文档
  • ERP对制造业务有何价值?
  • Ubuntu18.04安装rvm、ruby2.6.5和rails5.2.6
  • eBPF驱动的实时内核安全防护体系:构建零日漏洞免疫的云原生基础设施
  • 深度学习笔记之自然语言处理(NLP)
  • DeepSeek 助力 Vue 开发:打造丝滑的范围选择器(Range Picker)
  • 豪越科技:消防安全重点单位一体化安全管控
  • LLM有哪些可控超参数
  • MySQL性能优化
  • Redis(高阶篇)03章——缓存双写一致性之更新策略探讨
  • Azure Synapse Dedicated SQL Pool统计指定表中各字段的空值、空字符串或零值比例
  • 什么是 近端策略优化算法PPO
  • 【动态规划】(二)动态规划——0-1背包问题
  • 第35次CCF计算机软件能力认证 python 参考代码
  • RK3588 ubuntu20.04 换源 aarch64源
  • redis数据类型
  • WebAssembly 3.0发布:浏览器端高性能计算迎来新突破!
  • DFS算法篇:理解递归,熟悉递归,成为递归