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)

完。

相关内容

热门资讯

宁夏出台未成年人保护新规 学校... 本报讯(记者马学礼 李静楠)近日,宁夏回族自治区人大常委会表决通过《宁夏回族自治区实施〈中华人民共和...
央行货币政策委员会:加强货币政... 中国人民银行货币政策委员会2025年第四季度例会于12月18日召开。会议要求,要继续实施适度宽松的货...
秦皇岛为餐厨废弃物管理“立规矩... 12月23日,秦皇岛市新闻办举办《秦皇岛市餐厨废弃物管理条例》颁布实施新闻发布会,相关负责人介绍了有...
案无大小用心辩|蓝天彬律师《正... 近年来,大型超市越来越多,人工收银和自助收银越来越结合,有些超市甚至全部启用自助结账。 邓晓光(化...
【早知道】北京调整住房限购政策... 人民财讯12月25日电,【摘要】央行:综合运用多种工具,加强货币政策调控。八部门联合发布《关于金融支...
浙江棒杰控股集团股份有限公司关... 本公司及董事会全体成员保证信息披露的内容真实、准确、完整,没有虚假记载、误导性陈述或者重大遗漏。 重...
公安机关依法征集两名台湾居民违... 据新华社北京12月24日电(记者 李寒芳 尚昊)国务院台办发言人彭庆恩24日在例行新闻发布会上表示,...
场景创新+政策赋能激活长沙商业... 长沙晚报全媒体记者 刘捷萍 年终岁末,消费旺季启幕,长沙商业活力迸发。各大商圈特色活动轮番上新,千万...
“江西省电动自行车消防安全管理... 央广网南昌12月25日消息(记者胡斐 实习记者叶昱汝)12月24日,江西省人大常委会办公厅、省人大社...
操盘必读丨北京调整楼市限购政策... 要闻精选>> 金融支持加快西部陆海新通道建设 八部门联合发布21条举措 近日,中国人民银行、国家发展...