PySpark coding

记录一些pyspark的简单程序......

WordCount

读取hdfs文件,wc:

from pyspark import SparkContext, SparkConf

"""
Pyspark Word Count Demo
"""


def sorted_all_result(wc_rdd):
    """
    WordCount取全量,collect()之后排序
    :param wc_rdd: RDD
    :return:
    """
    word_list = wc_rdd.collect()
    sorted_list = sorted(word_list, key=lambda tuple2: tuple2[1], reverse=True)
    print(sorted_list)


def sorted_top_n_result(wc_rdd, n):
    """
    WordCount takeOrdered()取TopN,倒序
    :param wc_rdd: RDD
    :param n: 取数个数
    :return:
    """
    top_n_list = wc_rdd.takeOrdered(n, key=lambda tuple2: tuple2[1])
    print(top_n_list)


def main():
    conf = SparkConf().setAppName("PysparkDemo01").setMaster("spark://192.168.61.128:7077")
    sc = SparkContext(conf=conf)
    rdd = sc.textFile("hdfs://192.168.61.128:9000/data/wc.txt")
    wc_rdd = rdd.flatMap(lambda line: str(line).replace(".", "").replace(",", "").lower().split(" ")).map(
        lambda word: (word, 1)).reduceByKey(lambda x, y: x + y)
    # sorted_all_result(wc_rdd)
    # print(type(wc_rdd))
    sorted_top_n_result(wc_rdd, 3)


if __name__ == "__main__":
    main()

读取文件创建DataFrame以及一些简单操作

文件:C:/data/students.csv

 df.withColumn()为创建列,第一个参数为列名。之后用到了pyspark.sql.functions里面的方法进行赋值和数据处理等。

from pyspark.sql import SparkSession
import pyspark.sql.functions as F


def gen_df():
    # spark = SparkSession.builder.appName("SparkSqlDemo01").master("spark://192.168.61.128:7077").getOrCreate()
    spark = SparkSession.builder.appName("SparkSqlDemo01").master("local").getOrCreate()
    df = spark.read.csv("C:/data/students.csv", sep=",", header=True)

    result = (
        df.withColumn("year", F.substring(F.col("birthday"), 0, 4))
            .withColumn("last_month_day", F.lit("1231"))
            .withColumn("birth_year_last_day", F.to_date(F.concat(F.col("year"), F.col("last_month_day")), "yyyyMMdd"))
            .select("*")
    )

    result.show()


if __name__ == "__main__":
    gen_df()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏舟飞流

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值