最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解SparkSql輸出數(shù)據(jù)的方式

 更新時(shí)間:2024年11月07日 16:53:51   作者:jlting195  
在處理數(shù)據(jù)時(shí),SparkSql提供了多種數(shù)據(jù)輸出方式,包括普通文件輸出、保存到數(shù)據(jù)庫和保存到Hive,普通文件輸出支持追加模式、覆寫模式、報(bào)錯(cuò)模式和忽略模式,本文介紹SparkSql輸出數(shù)據(jù)的方式,感興趣的朋友一起看看吧

一、普通文件輸出方式

 方式一:給定輸出數(shù)據(jù)源的類型和地址

df.write.format("json").save(path)
df.write.format("csv").save(path)
df.write.format("parquet").save(path)

方式二:直接調(diào)用對(duì)應(yīng)數(shù)據(jù)源類型的方法

df.write.json(path)
df.write.csv(path)
df.write.parquet(path)

append: 追加模式,當(dāng)數(shù)據(jù)存在時(shí),繼續(xù)追加
overwrite: 覆寫模式,當(dāng)數(shù)據(jù)存在時(shí),覆寫以前數(shù)據(jù),存儲(chǔ)當(dāng)前最新數(shù)據(jù);
error/errorifexists: 如果目標(biāo)存在就報(bào)錯(cuò),默認(rèn)的模式
ignore: 忽略,數(shù)據(jù)存在時(shí)不做任何操作

代碼編寫模板: 

df.write.mode(saveMode="append").format("csv").save(path)

代碼演示普通的文件輸出格式: 

import os
from pyspark.sql import SparkSession
if __name__ == '__main__':
    # 配置環(huán)境
    os.environ['JAVA_HOME'] = 'C:/Program Files/Java/jdk1.8.0_241'
    # 配置Hadoop的路徑,就是前面解壓的那個(gè)路徑
    os.environ['HADOOP_HOME'] = 'D:/hadoop-3.3.1'
    # 配置base環(huán)境Python解析器的路徑
    os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'  # 配置base環(huán)境Python解析器的路徑
    os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'
    spark = SparkSession.builder.master("local[2]").appName("").config(
        "spark.sql.shuffle.partitions", 2).getOrCreate()
    df = spark.read.json("../../datas/person.json")
    # 獲取年齡最大的人的名字
    df.createOrReplaceTempView("persons")
    rsDf = spark.sql("""
       select name,age from persons where age = (select max(age) from persons)
    """)
    # 將結(jié)果打印到控制臺(tái)
    #rsDf.write.format("console").save()
    #rsDf.write.json("../../datas/result",mode="overwrite")
    #rsDf.write.mode(saveMode='overwrite').format("json").save("../../datas/result")
    #rsDf.write.mode(saveMode='overwrite').format("csv").save("../../datas/result1")
    #rsDf.write.mode(saveMode='overwrite').format("parquet").save("../../datas/result2")
    #rsDf.write.mode(saveMode='append').format("csv").save("../../datas/result1")
    # text 保存路徑為hdfs 直接報(bào)錯(cuò),不支持
    #rsDf.write.mode(saveMode='overwrite').text("hdfs://bigdata01:9820/result")
    #rsDf.write.orc("hdfs://bigdata01:9820/result",mode="overwrite")
    rsDf.write.parquet("hdfs://bigdata01:9820/result", mode="overwrite")
    spark.stop()

二、保存到數(shù)據(jù)庫中

代碼演示:

import os
# 導(dǎo)入pyspark模塊
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
if __name__ == '__main__':
    # 配置環(huán)境
    os.environ['JAVA_HOME'] = 'D:\Download\Java\JDK'
    # 配置Hadoop的路徑,就是前面解壓的那個(gè)路徑
    os.environ['HADOOP_HOME'] = 'D:\\bigdata\hadoop-3.3.1\hadoop-3.3.1'
    # 配置base環(huán)境Python解析器的路徑
    os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'  # 配置base環(huán)境Python解析器的路徑
    os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'
    spark = SparkSession.builder.master('local[*]').appName('').config("spark.sql.shuffle.partitions", 2).getOrCreate()
    df5 = spark.read.format("csv").option("sep", "\t").load("../../datas/zuoye/emp.tsv")\
       .toDF('eid','ename','salary','sal','dept_id')
    df5.createOrReplaceTempView('emp')
    rsDf = spark.sql("select * from emp")
    rsDf.write.format("jdbc") \
        .option("driver", "com.mysql.cj.jdbc.Driver") \
        .option("url", "jdbc:mysql://bigdata01:3306/mysql") \
        .option("user", "root") \
        .option("password", "123456") \
        .option("dbtable", "emp1") \
        .save(mode="overwrite")
    spark.stop()
    # 使用完后,記得關(guān)閉

三、保存到hive中 

代碼演示: 

import os
# 導(dǎo)入pyspark模塊
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
if __name__ == '__main__':
    # 配置環(huán)境
    os.environ['JAVA_HOME'] = 'D:\Download\Java\JDK'
    # 配置Hadoop的路徑,就是前面解壓的那個(gè)路徑
    os.environ['HADOOP_HOME'] = 'D:\\bigdata\hadoop-3.3.1\hadoop-3.3.1'
    # 配置base環(huán)境Python解析器的路徑
    os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'  # 配置base環(huán)境Python解析器的路徑
    os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'
    os.environ['HADOOP_USER_NAME'] = 'root'
    spark = SparkSession \
        .builder \
        .appName("HiveAPP") \
        .master("local[2]") \
        .config("spark.sql.warehouse.dir", 'hdfs://bigdata01:9820/user/hive/warehouse') \
        .config('hive.metastore.uris', 'thrift://bigdata01:9083') \
        .config("spark.sql.shuffle.partitions", 2) \
        .enableHiveSupport() \
        .getOrCreate()
    df5 = spark.read.format("csv").option("sep", "\t").load("../../datas/zuoye/emp.tsv") \
        .toDF('eid', 'ename', 'salary', 'sal', 'dept_id')
    df5.createOrReplaceTempView('emp')
    rsDf = spark.sql("select * from emp")
    rsDf.write.saveAsTable("spark.emp")
    spark.stop()
    # 使用完后,記得關(guān)閉

到此這篇關(guān)于SparkSql輸出數(shù)據(jù)的方式的文章就介紹到這了,更多相關(guān)SparkSql輸出數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL MVVC多版本并發(fā)控制的實(shí)現(xiàn)詳解

    MySQL MVVC多版本并發(fā)控制的實(shí)現(xiàn)詳解

    在多版本并發(fā)控制中,為了保證數(shù)據(jù)操作在多線程過程中,保證事務(wù)隔離的機(jī)制,降低鎖競(jìng)爭(zhēng)的壓力,保證較高的并發(fā)量。在每開啟一個(gè)事務(wù)時(shí),會(huì)生成一個(gè)事務(wù)的版本號(hào),被操作的數(shù)據(jù)會(huì)生成一條新的數(shù)據(jù)行
    2022-08-08
  • MySQL多列日期同步更新的五種實(shí)現(xiàn)方法

    MySQL多列日期同步更新的五種實(shí)現(xiàn)方法

    當(dāng)遇到會(huì)員有效期、服務(wù)周期、數(shù)據(jù)版本等需要批量更新日期字段時(shí),如何精準(zhǔn)控制日期部分而保留原始時(shí)間?所以本文給大家介紹了MySQL多列日期同步更新的五種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2025-05-05
  • 生產(chǎn)環(huán)境MySQL索引時(shí)效的排查過程

    生產(chǎn)環(huán)境MySQL索引時(shí)效的排查過程

    這篇文章主要介紹了生產(chǎn)環(huán)境MySQL索引時(shí)效的排查過程,文章根據(jù)SQL查詢耗時(shí)特別長(zhǎng),看了執(zhí)行計(jì)劃發(fā)現(xiàn)沒有走索引的問題展開詳細(xì)介紹,需要的朋友可以參考一下
    2022-04-04
  • Mysql 獲取表的comment 字段操作

    Mysql 獲取表的comment 字段操作

    這篇文章主要介紹了Mysql 獲取表的comment 字段操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(三)--查看字段的長(zhǎng)度

    與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(三)--查看字段的長(zhǎng)度

    今天我們來對(duì)比下MYSQL和MSSQL關(guān)于查看字段長(zhǎng)度之間的區(qū)別
    2014-06-06
  • MySQl數(shù)據(jù)庫必知必會(huì)sql語句(加強(qiáng)版)

    MySQl數(shù)據(jù)庫必知必會(huì)sql語句(加強(qiáng)版)

    本文給大家分享了一篇關(guān)于mysql數(shù)據(jù)庫必會(huì)sql語句加強(qiáng)版內(nèi)容,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-04-04
  • Mysql提升索引效率優(yōu)化的八種方法總結(jié)

    Mysql提升索引效率優(yōu)化的八種方法總結(jié)

    索引實(shí)際上也是一張表,保存了主鍵和索引的字段,并且指向?qū)嶓w表的記錄,所以索引也是需要占用空間的,這篇文章主要給大家介紹了關(guān)于Mysql提升索引效率優(yōu)化的八種方法,需要的朋友可以參考下
    2024-04-04
  • Mysql中FIND_IN_SET()和IN區(qū)別簡(jiǎn)析

    Mysql中FIND_IN_SET()和IN區(qū)別簡(jiǎn)析

    這篇文章主要介紹了Mysql中FIND_IN_SET()和IN區(qū)別簡(jiǎn)析,設(shè)計(jì)實(shí)例代碼,具有一定參考價(jià)值。需要的朋友可以了解。
    2017-10-10
  • MySQL修改默認(rèn)字符集編碼的方法

    MySQL修改默認(rèn)字符集編碼的方法

    這篇文章主要介紹了MySQL修改默認(rèn)字符集編碼的方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • mysql數(shù)據(jù)庫查詢優(yōu)化 mysql效率

    mysql數(shù)據(jù)庫查詢優(yōu)化 mysql效率

    MySQL由于它本身的小巧和操作的高效, 在數(shù)據(jù)庫應(yīng)用中越來越多的被采用.我在開發(fā)一個(gè)P2P應(yīng)用的時(shí)候曾經(jīng)使用MySQL來保存P2P節(jié)點(diǎn),由于P2P的應(yīng)用中,結(jié)點(diǎn)數(shù)動(dòng)輒上萬個(gè),而且節(jié)點(diǎn)變化頻繁,因此一定要保持查詢和插入的高效.以下是我在使用過程中做的提高效率的三個(gè)有效的嘗試. 1. 使用statement進(jìn)行綁定查詢 2. 隨機(jī)的獲取記錄 3. 使用連接池管理連接.
    2008-01-01

最新評(píng)論

明光市| 景东| 无为县| 宁波市| 思南县| 翼城县| 温州市| 普宁市| 醴陵市| 深水埗区| 澳门| 新化县| 信丰县| 龙游县| 喀喇沁旗| 普兰店市| 喀喇沁旗| 永嘉县| 靖宇县| 梁河县| 读书| 上栗县| 高州市| 凉山| 新化县| 定陶县| 山阳县| 新乐市| 阿勒泰市| 绥芬河市| 嘉义县| 桐梓县| 榆林市| 漾濞| 颍上县| 浏阳市| 武乡县| 泰州市| 曲阳县| 肃宁县| 临城县|