pyspark连接,读入和写出mysql数据库

 

版本说明

  • pyspark版本是2.4.6版本
  • mysql是8.0.20版本

pyspark读CSV文件

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('dataFrameApply').getOrCreate()

filepath = '/Users/hejipei/tmp/read_spark_csv_demo.csv'
df_spark_csv = spark.read.csv(filepath, header='true', inferSchema='true', sep=',')
df_spark_csv.createOrReplaceTempView('tmp_csv')

spark.sql('select * from  tmp_csv limit 10').show()

pyspark读excel文件

# 没有直接读取excel的api接口,可以借助pandas 读取数据 然后转化为spark数据格式
from pyspark.sql import SparkSession
import pandas as pd
spark = SparkSession.builder.appName('dataFrameApply').getOrCreate()

df =  pd.read_excel('/Users/hejipei/tmp/read_spark_excel_demo.xlsx')
df_spark_excel= spark.createDataFrame(df)  # 转换为spark格式
df_spark_excel.createOrReplaceTempView('tmp_excel')

spark.sql('select * from  tmp_excel limit 5').show()

pyspark连接mysql数据库

连接mysql需要下载驱动,这点需要注意,没有驱动会有提示,自行百度下载对应的驱动。

from pyspark.sql import SparkSession
# 驱动位置
# /Users/hejipei/soft/jar/mysql-connector-java-8.0.11.jar

# 连接spark
spark = SparkSession.builder.appName('My first app')\
    .config('spark.executor.extraClassPath', '/Users/hejipei/pyspark/*')\
    .config('spark.driver.extraClassPath', '/Users/hejipei/pyspark/*')\
    .getOrCreate()
# 连接mysql
url = 'jdbc:mysql://127.0.0.1:3306/test?&useSSL=false'
properties = {'user': 'root', 'password': 'root'}
# 查看需数据
table = "(select * from test.test_hjp limit 1) temp"  # 写sql
# sql_test = 'select * from test_hjp limit 1'
df = spark.read.jdbc(url=url, table=table, properties=properties)
df.show()

pyspark写入数据库

# 写入数据库
"""写入模式(mode)从源码看有四种模式:
	``overwrite``是覆盖;
	``append``是增加;
	``ignore``是如果数据已存在,则静默忽略此操作;
	``error`` or ``errorifexists`` (default case):如果数据有问题就抛出异常。
	"""
# test_hjp 为表名称
df.write.jdbc(url, 'test_hjp', model='append', properties=properties)


 

你可能感兴趣的:(spark)