[pyspark] pyspark使用记录

以下不定时记录一些pyspark使用过程中的心得、备忘、注意事项等。

  • reduceByKey:
    尽量使用reduceByKey来替代groupByKey, 用reduceByKey时先把数据整理成(key, value)对 (出于性能的考虑)

  • coalesce:
    coalesce(1)之前,尤其是存下来的文件比较大时,最好先count()一下

  • 读入文件:
    多个文件路径用逗号’,’隔开就可以读,比如read.parquet(‘pathA,pathA’), textFile(‘pathA,pathA’)

  • 读入文件:
    在读多个路径的parquet文件时,(似乎)以第一个读到的parquet文件的schema作为所有文件的schema,因此若多个路径下schema不一样,这样读取可能不大安全。在read多个文件时,也可以选择有read.option(‘mergeSchema’,’true’).parquet(‘path………’)的方式(应该不局限于parquet格式吧),可以合并schema,但是这个操作比较耗时。

  • 写入文件:
    write的时候可以用overwrite选项,这样就不用先删掉已有目标路径下的文件了

  • Schema:
    df_name.columns可以返回一个list,其每个元素为df_name的一个字段,但是“fieldA.fieldA_1”这种字段不会出现在list中,只会出现“fieldA”

  • Schema:
    df_name.printSchema()可以打印出完整schema

  • Row:
    row可以用xx[‘fieldA’]来获取列值, 也可以用asDict()变为dict,这样就可以遍历其中的字段了。

  • DataFrame union:
    两个df之间要union之前,记得把schema顺序对齐。解决方法:可以先对两个df分别select一下,确定字段顺序。

  • repartition() :
    给数据手动分区,可增加并行度

  • rdd:
    读入文件后可以用.rdd将不是rdd的转为rdd,当然可以先将自己需要的字段select出来再转

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值