使用pyspark SQL处理MySQL中的数据

pyspark连接mysql

前提是需要下载jar包。
Mysql-connector-java.jar

from pyspark import SparkContext
from pyspark.sql import SQLContext
import pyspark.sql.functions as F


sc = SparkContext("local", appName="mysqltest")
sqlContext = SQLContext(sc)
df = sqlContext.read.format("jdbc").options(
    url="jdbc:mysql://localhost:3306/mydata?user=root&password=mysql&"
        "useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&"
        "useLegacyDatetimeCode=false&serverTimezone=UTC ", dbtable="detail_data").load()
df.show(n=5)
sc.stop()

pyspark SQL常用语法

pyspark SQL的部分语法和pandas的很相似。

输出schema

df.printSchema()
# root
#  |-- id: integer (nullable = true)
#  |-- 省份: string (nullable = true)

预览表

df.show(n=5)
# +----+------+------+------+------+
# |  id|  省份|  城市|  区县|  区域|
# +----+------+------+------+------
# |2557|广东省|深圳市|罗湖区|春风路
# ...

统计数量

print(df.count())
# 47104

输出列名称和字段类型

print(df.columns)
# ['id', '省份', '城市', '区县', '区域', '小区', '源地址',...
print(df.dtypes)
# [('id', 'int'), ('省份', 'string'), ('城市', 'string'),...

选择列

df.select('城市', '区县', '区域', '小区').show()
# +------+------+------+--------------+
# |  城市|  区县|  区域|          小区|
# +------+------+------+--------------+
# |深圳市|罗湖区|春风路|      凯悦华庭|
# |深圳市|罗湖区|春风路|      置地逸轩|
# ...

为选择的列赋予新名称

可以看到有两种方式来对指定列做操作:

  1. 列名称是英文的话,直接在df后面用点号调用
  2. 列名称非英文,可以在后面用中括号调用
df.select(df.id.alias('id_value'), '小区'
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值