亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

pyspark對Mysql數(shù)據(jù)庫進(jìn)行讀寫的實(shí)現(xiàn)

 更新時(shí)間:2020年12月30日 11:40:29   作者:FTDdata  
這篇文章主要介紹了pyspark對Mysql數(shù)據(jù)庫進(jìn)行讀寫的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

1 軟件版本

在Python中使用Spark,需要安裝配置Spark,這里跳過配置的過程,給出運(yùn)行環(huán)境和相關(guān)程序版本信息。

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

2 環(huán)境配置

pyspark連接Mysql是通過java實(shí)現(xiàn)的,所以需要下載連接Mysql的jar包。

下載地址

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

環(huán)境配置完成!

3 讀取Mysql

腳本如下:

from pyspark.sql import SQLContext, SparkSession

if __name__ == '__main__':
  # spark 初始化
  spark = SparkSession. \
    Builder(). \
    appName('sql'). \
    master('local'). \
    getOrCreate()
  # mysql 配置(需要修改)
  prop = {'user': 'xxx', 
      'password': 'xxx', 
      'driver': 'com.mysql.cj.jdbc.Driver'}
  # database 地址(需要修改)
  url = 'jdbc:mysql://host:port/database'
  # 讀取表
  data = spark.read.jdbc(url=url, table='tb_newCity', properties=prop)
  # 打印data數(shù)據(jù)類型
  print(type(data))
  # 展示數(shù)據(jù)
  data.show()
  # 關(guān)閉spark會話
  spark.stop()
  • 注意點(diǎn):
  • prop參數(shù)需要根據(jù)實(shí)際情況修改,文中用戶名和密碼用xxx代替了,driver參數(shù)也可以不需要;
  • url參數(shù)需要根據(jù)實(shí)際情況修改,格式為jdbc:mysql://主機(jī):端口/數(shù)據(jù)庫
  • 通過調(diào)用方法read.jdbc進(jìn)行讀取,返回的數(shù)據(jù)類型為spark DataFrame;

運(yùn)行腳本,輸出如下:

在這里插入圖片描述

4 寫入Mysql

腳本如下:

import pandas as pd
from pyspark import SparkContext
from pyspark.sql import SQLContext, Row

if __name__ == '__main__':
  # spark 初始化
  sc = SparkContext(master='local', appName='sql')
  spark = SQLContext(sc)
  # mysql 配置(需要修改)
  prop = {'user': 'xxx',
      'password': 'xxx',
      'driver': 'com.mysql.cj.jdbc.Driver'}
  # database 地址(需要修改)
  url = 'jdbc:mysql://host:port/database'

  # 創(chuàng)建spark DataFrame
  # 方式1:list轉(zhuǎn)spark DataFrame
  l = [(1, 12), (2, 22)]
  # 創(chuàng)建并指定列名
  list_df = spark.createDataFrame(l, schema=['id', 'value']) 
  
  # 方式2:rdd轉(zhuǎn)spark DataFrame
  rdd = sc.parallelize(l) # rdd
  col_names = Row('id', 'value') # 列名
  tmp = rdd.map(lambda x: col_names(*x)) # 設(shè)置列名
  rdd_df = spark.createDataFrame(tmp) 
  
  # 方式3:pandas dataFrame 轉(zhuǎn)spark DataFrame
  df = pd.DataFrame({'id': [1, 2], 'value': [12, 22]})
  pd_df = spark.createDataFrame(df)

  # 寫入數(shù)據(jù)庫
  pd_df.write.jdbc(url=url, table='new', mode='append', properties=prop)
  # 關(guān)閉spark會話
  sc.stop()

注意點(diǎn):

propurl參數(shù)同樣需要根據(jù)實(shí)際情況修改;

寫入數(shù)據(jù)庫要求的對象類型是spark DataFrame,提供了三種常見數(shù)據(jù)類型轉(zhuǎn)spark DataFrame的方法;

通過調(diào)用write.jdbc方法進(jìn)行寫入,其中的model參數(shù)控制寫入數(shù)據(jù)的行為。

model 參數(shù)解釋
error 默認(rèn)值,原表存在則報(bào)錯(cuò)
ignore 原表存在,不報(bào)錯(cuò)且不寫入數(shù)據(jù)
append 新數(shù)據(jù)在原表行末追加
overwrite 覆蓋原表

5 常見報(bào)錯(cuò)

Access denied for user …

在這里插入圖片描述

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

No suitable driver


原因:沒有配置運(yùn)行環(huán)境
解決辦法:下載jar包進(jìn)行配置,具體過程參考本文的2 環(huán)境配置。

到此這篇關(guān)于pyspark對Mysql數(shù)據(jù)庫進(jìn)行讀寫的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)pyspark Mysql讀寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python新手學(xué)習(xí)函數(shù)默認(rèn)參數(shù)設(shè)置

    Python新手學(xué)習(xí)函數(shù)默認(rèn)參數(shù)設(shè)置

    在本篇文章里小編給大家分享的是關(guān)于Python新手學(xué)習(xí)函數(shù)默認(rèn)參數(shù)設(shè)置的相關(guān)知識點(diǎn),需要的朋友們可以參考下。
    2020-06-06
  • Python常問的100個(gè)面試問題匯總(上篇)

    Python常問的100個(gè)面試問題匯總(上篇)

    這篇文章主要介紹了Python常問的100個(gè)面試問題匯總(上篇),文章內(nèi)容詳細(xì),簡單易懂,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2023-01-01
  • 每個(gè) Python 開發(fā)者都應(yīng)該知道的7種好用工具(效率翻倍)

    每個(gè) Python 開發(fā)者都應(yīng)該知道的7種好用工具(效率翻倍)

    Python 從一種小的開源語言開始,到現(xiàn)在,它已經(jīng)成為開發(fā)者很受歡迎的編程語言之一。這篇文章主要介紹了每個(gè) Python 開發(fā)者都應(yīng)該知道的7種好用工具(效率翻倍),需要的朋友可以參考下
    2021-03-03
  • python strip()函數(shù) 介紹

    python strip()函數(shù) 介紹

    Python strip() 方法用于移除字符串頭尾指定的字符,需要的朋友可以參考下
    2013-05-05
  • 解決90%的常見問題的8個(gè)python NumPy函數(shù)

    解決90%的常見問題的8個(gè)python NumPy函數(shù)

    這篇文章主要為大家介紹了解決90%的常見問題的8個(gè)python NumPy函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • python中字典dict排序sorted的實(shí)現(xiàn)

    python中字典dict排序sorted的實(shí)現(xiàn)

    本文主要介紹了python中字典dict排序sorted的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 舉例講解Python裝飾器

    舉例講解Python裝飾器

    這篇文章主要介紹了Python裝飾器的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python實(shí)現(xiàn)高斯投影正反算方式

    python實(shí)現(xiàn)高斯投影正反算方式

    今天小編就為大家分享一篇python實(shí)現(xiàn)高斯投影正反算方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python中語法糖的妙用分享

    python中語法糖的妙用分享

    在Python中,語法糖是指一些為了增加代碼的可讀性、易用性和簡潔性而添加的特性,本文為大家整理了一些python中常見語法糖的使用,需要的小伙伴可以了解下
    2023-11-11
  • python3實(shí)現(xiàn)多線程聊天室

    python3實(shí)現(xiàn)多線程聊天室

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)多線程聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論