栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【pyspark】DataFrame基础操作(一)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【pyspark】DataFrame基础操作(一)

介绍一下 pyspark 的 DataFrame 基础操作。

一、DataFrame创建

创建pyspark的DataFrame的方式有很多种,这边列举一些:

  • 通过 Row list 创建DataFrame
from datetime import datetime, date
import pandas as pd
from pyspark.sql import Row

df = spark.createDataFrame([
    Row(a=1, b=2., c='string1', d=date(2000, 1, 1), e=datetime(2000, 1, 1, 12, 0)),
    Row(a=2, b=3., c='string2', d=date(2000, 2, 1), e=datetime(2000, 1, 2, 12, 0)),
    Row(a=4, b=5., c='string3', d=date(2000, 3, 1), e=datetime(2000, 1, 3, 12, 0))
])
df

# 输出
DataFrame[a: bigint, b: double, c: string, d: date, e: timestamp]
  • 通过指定 schema 创建 DataFrame 
df = spark.createDataFrame([
    (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
    (2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
], schema='a long, b double, c string, d date, e timestamp')
df

# 输出
DataFrame[a: bigint, b: double, c: string, d: date, e: timestamp]
  • 通过 pandas DataFrame 创建 pyspark DataFrame 
pandas_df = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [2., 3., 4.],
    'c': ['string1', 'string2', 'string3'],
    'd': [date(2000, 1, 1), date(2000, 2, 1), date(2000, 3, 1)],
    'e': [datetime(2000, 1, 1, 12, 0), datetime(2000, 1, 2, 12, 0), datetime(2000, 1, 3, 12, 0)]
})
df = spark.createDataFrame(pandas_df)
df

# 输出
DataFrame[a: bigint, b: double, c: string, d: date, e: timestamp]
  •  从包含有元组列表的 rdd 创建 pyspark DataFrame
rdd = spark.sparkContext.parallelize([
    (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
    (2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
])
df = spark.createDataFrame(rdd, schema=['a', 'b', 'c', 'd', 'e'])
df

# 输出
DataFrame[a: bigint, b: double, c: string, d: date, e: timestamp]
二、查看DataFrame数据
  • 查看1或n行数据
df.show(1)

# 输出
+---+---+-------+----------+-------------------+
|  a|  b|      c|         d|                  e|
+---+---+-------+----------+-------------------+
|  1|2.0|string1|2000-01-01|2000-01-01 12:00:00|
+---+---+-------+----------+-------------------+
only showing top 1 row
  • 查看列名
df.columns

# 输出
['a', 'b', 'c', 'd', 'e']
  • 查看表结构
df.printSchema()

# 输出
root
 |-- a: long (nullable = true)
 |-- b: double (nullable = true)
 |-- c: string (nullable = true)
 |-- d: date (nullable = true)
 |-- e: timestamp (nullable = true)
  • pyspark DataFrame 转换成 pandas DataFrame
df.toPandas()

三、DataFrame保存与读取

pyspark DataFrame 支持保存成多种格式:csv、json、parquet、orc 等。具体如下:

  • DataFrame 保存
df.write.csv('foo.csv', mode="overwrite", header=True, sep=",")
df.write.json('foo.json', mode="overwrite")
df.write.parquet('foo.parquet', mode="overwrite")
df.write.orc('foo.orc', mode="overwrite")
  • DataFrame 读取 
spark.read.csv('foo.csv', header=True)
spark.read.json('foo.json')
spark.read.parquet('foo.parquet')
spark.read.orc('foo.orc')

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015225.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号