You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark结合MariaDB数据读取问题:基于Hadoop2.7.3与Spark2.3.0集群

解决Spark 2.3.0(YARN调度)读取MariaDB 10数据的完整方案

嘿,结合你搭建的Hadoop 2.7.3 + Spark 2.3.0(YARN调度)环境,我帮你把从MariaDB 10读取数据的配置和代码补全、梳理清楚:

第一步:处理JDBC驱动包

你已经下载了mysql-connector-java-5.1.46.tar.gz,接下来做这两步:

  • 解压压缩包:tar -zxvf mysql-connector-java-5.1.46.tar.gz,得到里面的mysql-connector-java-5.1.46-bin.jar文件
  • 配置驱动:
    • 方式一(全局生效):把这个jar包复制到所有Spark节点的$SPARK_HOME/jars/目录下,这样YARN集群运行任务时能自动加载驱动
    • 方式二(任务级生效):提交Spark任务时通过--jars参数指定驱动路径,比如:
      spark-submit --master yarn --deploy-mode cluster --jars /path/to/mysql-connector-java-5.1.46-bin.jar your_python_script.py
      

第二步:完整的Python读取代码

补全你没写完的代码,适配你的环境:

#!/usr/bin/python
from pyspark import SparkContext
from pyspark.sql import SQLContext

# 初始化Spark上下文和SQL上下文
sc = SparkContext(appName="MariaDB-Data-Reader")
sqlContext = SQLContext(sc)

# 配置JDBC连接参数,替换成你的实际信息
df_mysql = sqlContext.read.format("jdbc").options(
    # MariaDB的JDBC连接URL,注意替换IP、端口、数据库名
    url="jdbc:mysql://192.168.x.x:3306/your_database?useSSL=false&serverTimezone=UTC",
    # 对应你用的5.1.46驱动的类名
    driver="com.mysql.jdbc.Driver",
    # 要读取的表名,也可以写自定义SQL,比如"(SELECT id, name FROM user WHERE age > 18) AS filtered_user"
    dbtable="your_table",
    # MariaDB的用户名和密码
    user="your_username",
    password="your_password"
).load()

# 验证数据是否读取成功,打印前20行
df_mysql.show()

# 后续可以在这里添加你的Spark数据处理逻辑
# 比如 df_mysql.write.parquet("hdfs://your_hdfs_path/xxx.parquet")

额外提示:用SparkSession简化代码(Spark 2.x推荐)

Spark 2.x开始推荐用SparkSession替代SparkContext+SQLContext,代码更简洁:

#!/usr/bin/python
from pyspark.sql import SparkSession

# 初始化SparkSession
spark = SparkSession.builder.appName("MariaDB-Data-Reader").getOrCreate()

# 读取MariaDB数据
df_mysql = spark.read.format("jdbc").options(
    url="jdbc:mysql://192.168.x.x:3306/your_database?useSSL=false&serverTimezone=UTC",
    driver="com.mysql.jdbc.Driver",
    dbtable="your_table",
    user="your_username",
    password="your_password"
).load()

df_mysql.show()

关键注意事项

  • 驱动类匹配:因为你用的是mysql-connector-java-5.1.46,所以驱动类必须是com.mysql.jdbc.Driver,如果是8.x版本的驱动才用com.mysql.cj.jdbc.Driver,别搞混了
  • URL参数:添加serverTimezone=UTC是为了避免时区不匹配的报错,useSSL=false适用于没有配置SSL的测试环境,如果生产环境有SSL,去掉这个参数或者配置对应的SSL选项
  • YARN集群模式:如果用--deploy-mode cluster提交任务,确保驱动包路径在所有YARN节点都能访问到,或者把驱动包上传到HDFS,然后用hdfs:///path/to/jar作为--jars的参数

内容的提问来源于stack exchange,提问作者Essex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:41:35