spark dataFrame数据写出

SparkSQL统一API写出DataFrame数据

统一API语法:

df.write.mode().format().option(K,V).save(PATH)

  • mode,传入模式字符串可选:append追加,overwrite覆盖,ignore忽略,error重复就报异常(默认的)
  • format,传入格式字符串,可选:text,csv,json,parquet,orc,avro,jdbd
  • 注意text源只支持单列df写出,也就是数据写出来只有一列
  • option设置属性,如:.option("sep", ","),像保存csv时就可以指定它的分隔符
  • save写出的路径,支持本地文件和HDFS
python 复制代码
coding:utf8
import ...
if __name__ == '_main__':
    #O.构建执行环境入口对象SparkSession
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        config("spark.sql.shuffle.partitions", 2).\
        getorcCreate()
    sc = spark.sparkContext
    #1.读取数据集
    schema = StructType().add("user_id",StringType(),nullable=True).\
        add("movie_id",IntegerType(),nullable=True).
        add("rank",IntegerType(),nullable=True).
        add("ts",StringType),nullable=True)
    df = spark.read.format("csv").\
        option("sep","\t").\
        option("header",False).\
        option("encoding","utf-8").\
        schema(schema=schema).\
        Load("../data/input/sql/u.data")
    #Write text写出,只能写出一个列的数据,需要将df转换为单列df
    #这里用F对象里的concat_ws函数,指定---分隔,连接指定的字段
    df.select(F.concat_ws("---","user_id","movid_id","rank","ts")).\
        write.\
        mode("overwrite").\
        format("text").\
        save("../data/output/sql/text")
    # Write csv
    df.write.mode("overwrite").\
        format("csv").\
        option("sep", ";").
        option("header", True).\
        save("../data/output/sql/csv")
    # Write json
    df.write.mode("overwrite").\
        format("json").\
        save("../data/output/sql/json")
    # Write parquet
    df.write.mode("overwrite").\
        format("parqeut").\
        save("../data/output/sql/parquet")
相关推荐
大勇任卷舒17 小时前
【紧急招聘·短期驻场】HDP大数据工程师(郑州·4个月·包驻场补贴)
大数据
Elastic 中国社区官方博客18 小时前
在 Elasticsearch 中使用原生 PromQL 支持查询 Prometheus 指标
大数据·elasticsearch·搜索引擎·信息可视化·全文检索·prometheus
AC赳赳老秦18 小时前
政企内网落地:OpenClaw 离线环境深度适配方案,无外网场景下本地化模型对接与全功能使用
java·大数据·运维·python·自动化·deepseek·openclaw
ITyunwei098719 小时前
团队管理与人才发展:如何打造一支“召之即来,来之能战”的铁军?
大数据·运维·人工智能
喜欢流萤吖~19 小时前
Elasticsearch集群:高可用与水平扩展的基石
大数据·elasticsearch·搜索引擎
我是发哥哈21 小时前
跨AI模型生成视频的五大维度对比:选型避坑指南
大数据·人工智能·学习·机器学习·chatgpt·音视频
逸Y 仙X21 小时前
Elasticsearch时间类型实战
java·大数据·elasticsearch·搜索引擎·全文检索
Dxy12393102161 天前
Python如何处理树状分类数据
大数据·python·分类
凡人AI录1 天前
小红书商业变现 100 个关键词:从流量逻辑到长期复利
大数据
zhongerzixunshi1 天前
筑牢国家安全防线,赋能企业合规发展
大数据·人工智能·安全