一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - pyspark對Mysql數據庫進行讀寫的實現

pyspark對Mysql數據庫進行讀寫的實現

2021-08-20 00:09FTDdata Python

這篇文章主要介紹了pyspark對Mysql數據庫進行讀寫的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

pyspark是Spark對Python的api接口,可以在Python環境中通過調用pyspark模塊來操作spark,完成大數據框架下的數據分析與挖掘。其中,數據的讀寫是基礎操作,pyspark的子模塊pyspark.sql 可以完成大部分類型的數據讀寫。文本介紹在pyspark中讀寫Mysql數據庫。

1 軟件版本

在Python中使用Spark,需要安裝配置Spark,這里跳過配置的過程,給出運行環境和相關程序版本信息。

  • win10 64bit
  • java 13.0.1
  • spark 3.0
  • python 3.8
  • pyspark 3.0
  • pycharm 2019.3.4

2 環境配置

pyspark連接Mysql是通過java實現的,所以需要下載連接Mysql的jar包。

下載地址

pyspark對Mysql數據庫進行讀寫的實現

選擇下載Connector/J,然后選擇操作系統為Platform Independent,下載壓縮包到本地。

pyspark對Mysql數據庫進行讀寫的實現

然后解壓文件,將其中的jar包mysql-connector-java-8.0.19.jar放入spark的安裝目錄下,例如D:\spark\spark-3.0.0-preview2-bin-hadoop2.7\jars

pyspark對Mysql數據庫進行讀寫的實現

環境配置完成!

3 讀取Mysql

腳本如下:

  1. from pyspark.sql import SQLContext, SparkSession
  2.  
  3. if __name__ == '__main__':
  4. # spark 初始化
  5. spark = SparkSession. \
  6. Builder(). \
  7. appName('sql'). \
  8. master('local'). \
  9. getOrCreate()
  10. # mysql 配置(需要修改)
  11. prop = {'user': 'xxx',
  12. 'password': 'xxx',
  13. 'driver': 'com.mysql.cj.jdbc.Driver'}
  14. # database 地址(需要修改)
  15. url = 'jdbc:mysql://host:port/database'
  16. # 讀取表
  17. data = spark.read.jdbc(url=url, table='tb_newCity', properties=prop)
  18. # 打印data數據類型
  19. print(type(data))
  20. # 展示數據
  21. data.show()
  22. # 關閉spark會話
  23. spark.stop()
  • 注意點:
  • prop參數需要根據實際情況修改,文中用戶名和密碼用xxx代替了,driver參數也可以不需要;
  • url參數需要根據實際情況修改,格式為jdbc:mysql://主機:端口/數據庫
  • 通過調用方法read.jdbc進行讀取,返回的數據類型為spark DataFrame;

運行腳本,輸出如下:

pyspark對Mysql數據庫進行讀寫的實現

4 寫入Mysql

腳本如下:

  1. import pandas as pd
  2. from pyspark import SparkContext
  3. from pyspark.sql import SQLContext, Row
  4.  
  5. if __name__ == '__main__':
  6. # spark 初始化
  7. sc = SparkContext(master='local', appName='sql')
  8. spark = SQLContext(sc)
  9. # mysql 配置(需要修改)
  10. prop = {'user': 'xxx',
  11. 'password': 'xxx',
  12. 'driver': 'com.mysql.cj.jdbc.Driver'}
  13. # database 地址(需要修改)
  14. url = 'jdbc:mysql://host:port/database'
  15.  
  16. # 創建spark DataFrame
  17. # 方式1:list轉spark DataFrame
  18. l = [(1, 12), (2, 22)]
  19. # 創建并指定列名
  20. list_df = spark.createDataFrame(l, schema=['id', 'value'])
  21.  
  22. # 方式2:rdd轉spark DataFrame
  23. rdd = sc.parallelize(l) # rdd
  24. col_names = Row('id', 'value') # 列名
  25. tmp = rdd.map(lambda x: col_names(*x)) # 設置列名
  26. rdd_df = spark.createDataFrame(tmp)
  27.  
  28. # 方式3:pandas dataFrame 轉spark DataFrame
  29. df = pd.DataFrame({'id': [1, 2], 'value': [12, 22]})
  30. pd_df = spark.createDataFrame(df)
  31.  
  32. # 寫入數據庫
  33. pd_df.write.jdbc(url=url, table='new', mode='append', properties=prop)
  34. # 關閉spark會話
  35. sc.stop()

注意點:

propurl參數同樣需要根據實際情況修改;

寫入數據庫要求的對象類型是spark DataFrame,提供了三種常見數據類型轉spark DataFrame的方法;

通過調用write.jdbc方法進行寫入,其中的model參數控制寫入數據的行為。

 

model 參數解釋
error 默認值,原表存在則報錯
ignore 原表存在,不報錯且不寫入數據
append 新數據在原表行末追加
overwrite 覆蓋原表

5 常見報錯

Access denied for user …

pyspark對Mysql數據庫進行讀寫的實現

原因:mysql配置參數出錯
解決辦法:檢查user,password拼寫,檢查賬號密碼是否正確,用其他工具測試mysql是否能正常連接,做對比檢查。

No suitable driver

pyspark對Mysql數據庫進行讀寫的實現

原因:沒有配置運行環境
解決辦法:下載jar包進行配置,具體過程參考本文的2 環境配置

到此這篇關于pyspark對Mysql數據庫進行讀寫的實現的文章就介紹到這了,更多相關pyspark Mysql讀寫內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/jhr112/article/details/105798381

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本免费三片在线播放 | 欧美日韩国产在线人成 | 天天爱天天做天天爽天天躁 | 欧洲一级| 四虎www| 亚洲国产天堂久久精品网 | 国产精品每日在线观看男人的天堂 | 欧美贵妇videos办公室360 | tube69xxxxhd日本 | 啪啪模拟器 | 1024免费永久福利视频 | 我年轻漂亮的继坶2中字在线播放 | 久久免费看少妇级毛片蜜臀 | 久久人妻少妇嫩草AV无码 | 四虎在线永久视频观看 | 男女一级簧色带 | 国产精品亚洲综合久久 | 国四虎影永久 | 好大好湿好硬好爽好深免费视频 | 朝鲜美女免费一级毛片 | 国产第一页在线视频 | 高h扶她文肉 | 好湿好紧好大野战 | 菠萝视频5正版在线观看 | 忘忧草在线社区WWW日本-韩国 | 桃乃木香在线 | 欧美日韩一区视频 | 办公室强行丝袜秘书啪啪 | 思思91精品国产综合在线 | 精品女同同性视频很黄很色 | 欧美一级xxxx俄罗斯一级 | 欧美激情精品久久久久久不卡 | 亚洲欧美日韩精品高清 | 2022日韩理论片在线观看 | 日日操天天射 | 欧美一级在线 | 亚洲AV无码国产精品午夜久久 | 99久久精品国产免看国产一区 | 成年视频在线播放 | 高h文恩好大好爽 | 日本在线观看视频 |