pyspark中创建DF的方法:RDD、Pandas、读取文件

本文介绍了使用Pyspark在Python中创建DataFrame的多种方式,包括RDD转换、显式指定Schema、字段名指定、pandasDataFrame转换以及从外部文件读取数据。重点展示了SparkSession的使用和不同数据源的处理方法。
摘要由CSDN通过智能技术生成
if __name__ == '__main__':
    spark = SparkSession.builder.master('local[*]').appName('create_park').getOrCreate()
    # dataframe的创建方式
    # 1.rdd转换的六种方式
    sc = spark.sparkContext
    rdd1 = sc.parallelize([('c01', '张三', 20), ('c02', '李四', 15), ('c03', '王五', 26), ('c01', '赵六', 30)])
    rdd2 = rdd1.filter(lambda x: x[0] != 'c01')

    # schema = StructType()\
    #     .add('id',StringType(),True)\
    #     .add('name',StringType(),False)\
    #     .add('age',IntegerType())

    st = StructType([
        # 字段名 字段类型 字段是否可以为空
        StructField("id", StringType(), True),
        StructField("name", StringType(), True),
        StructField("age", IntegerType())
    ])

    # 1.显式的指定schema
    df1 = spark.createDataFrame(rdd2, schema=st)
    df1.show()

    # 2.指定字段名,让spark自己进行类型推断
    df2 = spark.createDataFrame(rdd2, schema=["id", "name", "age"])
    df2.show()
    df2.printSchema()

    # 3.直接创建df,不指定字段名 默认为_1 _2 _3
    df3 = spark.createDataFrame(rdd2)
    df3.show()
    df3.printSchema()

    # 4.rdd直接调用toDF方法 也是三种 不指定schema 指定字段名 手动指定schema
    df4 = rdd2.toDF()
    df5 = rdd2.toDF(schema=["id", "name", "age"])
    df6 = rdd2.toDF(schema=st)

    # 2.将pandas的DF对象转换为dataframe的方式
    # 当处理的数据源比较特殊的时候, 比如 Excel格式, 此时可以通过pandas的DF直接读取, 然后转换为 spark的DF进行处理, 从而扩充spark的读取的数据源
    pd_df = pd.DataFrame({'id': ['c01', 'c02', 'c03'], 'name': ['张三', '李四', '王五']})
    p_df = spark.createDataFrame(pd_df)
    p_df.show()

    # 3.通过读取外部文件进行创建 这种方式的具体代码不需要记 用的时候查一下就可以了
    # df_init = spark.read\
    #     .format('csv')\
    #     .option('sep',',') \
    #     .option('header', True) \
    #     .option('inferSchema', True) \
    #     .option('encoding', 'UTF-8') \
    #     .load('file:///export/data/workspace/sz30_pyspark_parent/_03_pyspark_sql/data/stu.csv')
    # spark.read.csv()
    # spark.read.text()
    # spark.read.json()
    # spark.read.orc()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值