在python中使用spark用sql语句查询mysql数据

导包,这里我导了很多,因为我其他东西要用,光连接查询只需要两个包

import math
from pyspark import SparkConf
from pyspark.sql import SparkSession
import traceback
import os
from math import sqrt
from pyspark.sql import Row
import pandas as pd
# spark_home 的环境变量
from pyspark.sql.functions import isnull, isnan
from pyspark.sql.functions import expr

一些设置

appname = "test"  # 任务名称
master = "local"  # 单机模式设置 

 创建sparkSession

这里的连接数据库的jar包每个人的位置不同


conf = SparkConf().setAppName(appname).setMaster(master)  # spark资源配置
spark = SparkSession.builder.config(conf=conf)\
    .config('spark.driver.extraClassPath', '/usr/local/apache-hive-2.3.9-bin/lib/mysql-connector-java-5.1.49.jar') \
    .getOrCreate()

 连接mysql 数据库

这里的employee和salaries是我自己数据库里面的表,每个人的mysql配置不一样,每个人的用户和密码要修改

employee = spark.read.jdbc('jdbc:mysql://localhost:3306/employee?user=root&password=123&serverTimezone=UTC&useSSL=false', table='employees')
salaries = spark.read.jdbc('jdbc:mysql://localhost:3306/employee?user=root&password=123&serverTimezone=UTC&useSSL=false', table='salaries')
 

查询方法

在Spark中,registerTempTable方法是DataFrame或Dataset API的一个方法,用于将一个DataFrame注册为一个临时表,以便可以使用SQL查询语句对其进行查询。

这里就相当于查employee中的前10条数据


employee.registerTempTable("emp_tbl")
result = spark.sql('SELECT * FROM emp_tbl limit 10')
result.show()
#等价于employee.select("*").limit(10)
 

 查询结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值