Spark学习实例(Python):保存数据Save Data

我们用Spark处理完数据之后就需要将数据进行落地,比如保存为文本或者插入数据库,这样可以方便之后流程如页面可视化的处理。保存的数据类型有:

  • text
  • csv
  • json
  • jdbc
  • hive
  • hbase
  • kafka
  • elasticsearch

text
csv
json
parquet

将这四种保存方式放到一起,是因为保存方式基本相同,为了便于说明保存数据的使用,数据来源采用自己制造的数据集,

接下来编写代码来实现

from pyspark.sql import SparkSession

if __name__ == '__main__':
    spark = SparkSession\
        .builder\
        .appName("saveDatas")\
        .master("local[*]")\
        .getOrCreate()
    schema = ['name', 'age']
    datas = [('Jack', 27), ('Rose', 24), ('Andy', 32)]
    peopledf = spark.createDataFrame(datas, schema)
    peopledf.show()
    # +----+---+
    # |name|age|
    # +----+---+
    # |Jack| 27|
    # |Rose| 24|
    # |Andy| 32|
    # +----+---+
    peopledf.select("name").write.text("/home/llh/data/people_text")
    # Jack
    # Rose
    # Andy
    peopledf.write.csv("/home/llh/data/people_csv", sep=':')
    # Jack:27
    # Rose:24
    # Andy:32
    peopledf.write.json("/home/llh/data/people_json", mode='overwrite')
    # {"name": "Jack", "age": 27}
    # {"name": "Rose", "age": 24}
    # {"name": "Andy", "age": 32}
    peopledf.write.parquet("/home/llh/data/people_parquet", mode='append')
    # ...
    spark.stop()

jdbc

jdbc数据库可以是mysql、oracle、tidb等等,基本是一致的,我们这里以mysql为例进行说明,在保存数据到数据库时,有四种不同的保存模式

SaveMode.Append => "append"  => 追加

SaveMode.Overwrite => "overwrite" => 覆盖

SaveMode.ErrorIfExists => "error" | "errorifexists" =>报异常

SaveMode.Ignore => "ignore" => 忽略

在使用过程中会发现没有update,也就是不能更新数据库的数据,要想实现这个必须修改Spark源码,可以参考Spark源码实现MySQL update

编写代码将数据保存到数据库

from pyspark.sql import SparkSession

if __name__ == '__main__':
    spark = SparkSession\
        .builder\
        .appName("saveDatas")\
        .master("local[*]")\
        .getOrCreate()
    schema = ['name', 'age']
    datas = [('Jack', 27), ('Rose', 24), ('Andy', 32)]
    peopledf = spark.createDataFrame(datas, schema)
    peopledf.show()
    # +----+---+
    # |name|age|
    # +----+---+
    # |Jack| 27|
    # |Rose| 24|
    # |Andy| 32|
    # +----+---+
    mysql_url = "jdbc:mysql://localhost:3306/test?user=root&password=1"
    mysql_table = "people"
    peopledf.write.mode("append").jdbc(mysql_url, mysql_table)
    spark.stop()

hive

hbase

kafka

elasticsearch

 

Spark学习目录:

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值