pyspark创建空的DataFrame
创始人
2024-02-14 22:16:39
0

目录

  • 前言
  • 正文
    • 创建没有schema的DataFrame
    • 创建有schema的DataFrame
      • 直接创建空的DataFrame
        • 法1:直接传递 [ ]
      • 通过空RDD创建空DataFrame
        • 法2:通过spark.createDataFrame(rdd)函数
        • 法3:通过rdd.toDF函数
  • 总结

前言

做大数据分析时,经常会使用到空的DataFrame,直接给spark.createDataFrame传递空的Pandas DataFrame会报错:

spark.createDataFrame(data=pd.DataFrame(data=None,columns=['pageid','uid']))
# 报错:
ValueError: can not infer schema from empty dataset

因此总结了几种可以成功创建空的spark DataFrame的方法。

参考:None

正文

创建没有schema的DataFrame

df_empty = spark.createDataFrame([], StructType([]))
df_empty.printSchema()
"""
输出:
root
"""

创建有schema的DataFrame

创建schema:

from pyspark.sql.types import StructType,StructField, StringType
schema = StructType([StructField('pageid', StringType(), True),StructField('uid', StringType(), True)])# 查看schema  
print(schema.simpleString())
"""
输出:
struct
"""

直接创建空的DataFrame

法1:直接传递 [ ]

df_empty1 = spark.createDataFrame([], schema)
df_empty1.printSchema()
"""
输出:
root|-- pageid: string (nullable = true)|-- uid: string (nullable = true)"""

通过空RDD创建空DataFrame

可以通过两种方式创建空的rdd:

rdd1 = spark.sparkContext.emptyRDD()
rdd2 = spark.sparkContext.parallelize([])

法2:通过spark.createDataFrame(rdd)函数

df_empty2 = spark.createDataFrame(rdd1,schema)
df_empty2.printSchema()
"""
输出:
root|-- pageid: string (nullable = true)|-- uid: string (nullable = true)
"""

法3:通过rdd.toDF函数

df_empty3 = rdd1.toDF(schema)
df_empty3.printSchema()
"""
输出:
root|-- pageid: string (nullable = true)|-- uid: string (nullable = true)
"""

总结

推荐使用通过“法1”,流程简单:

from pyspark.sql.types import StructType, StructField, StringType
schema = StructType([StructField('pageid', StringType(), True),StructField('uid', StringType(), True)])
df_empty1 = spark.createDataFrame([], schema)

完。

相关内容

热门资讯

“黑飞”无人机砸坏上海环球金融... 涉事无人机。 网络截图 南都讯 记者马辉 近日,两架无人机在上海环球金融中心400多米的顶部风洞处...
筑牢健康基石——2025年全民... “体重管理年”活动广泛开展;“三减三健”理念深入人心;全国人均体育场地面积逐年增加……健康是广大人民...
科学家发现“最延寿运动”,散步... 本文转自【央视财经】; 人人都知道运动有益健康,但那么多运动项目,哪个性价比最高?哪个对长寿更有益?...
海关律师、走私辩护律师邵丹:查... 近日,文锦渡海关在客运进境车道查获跨境客车走私足金金币212克。 某日,海关关员在文锦渡口岸客运进...
广州暂停汽车“置换更新”补贴政... IT之家 8 月 30 日消息,广州市商务局发布公告,宣布 2025 年广州市汽车“置换更新”补贴政...
金建希和韩前总理同一天遭起诉 本报驻韩国特约记者 刘 媛 本报特约记者 李梓元 韩国特别检察组29日分别对前总统尹锡悦夫人金建希和...
洛阳:以制度创新力促“纸面之法... 大象新闻记者 沈伟 张超飞 通讯员 李现森 郝毅鹏 日前,洛阳市十六届人大常委会第二十二次会议审议通...
演员王鹤棣:私生粉酒店录音事件... 王鹤棣工作室就私生粉酒店房间门口录音事件再发声:不接受任何形式的和解与调解,面对一切不法行为,绝不姑...