Databricks下Spark Python调用window()显式传参仍报参数缺失错误
问题原因
你触发报错的核心原因是 orderBy 子句中调用了无参数的 f.window() 方法,而非 groupBy 中已经正确传参的window调用:
groupBy部分的f.window(timeColumn="Date", windowDuration="60 minutes", slideDuration="30 minutes")参数完整无问题- 后续
orderBy(f.window().asc(),...)中的空参数f.window()才是触发缺少必填位置参数'timeColumn'和'windowDuration'报错的根源
解决方案
推荐在groupBy时给窗口列定义别名,排序时直接调用别名即可,既简洁也避免重复传参出错,修正后代码如下:
staticCountedHash = countFifaStaticHash.groupBy( # 给窗口列设置别名 f.window(timeColumn="Date", windowDuration="60 minutes", slideDuration="30 minutes").alias('time_window'), 'Hashtags' ).agg( f.count('Hashtags').alias('Hash_ct') ).filter( f.col('Hash_ct')>100 ).orderBy( # 直接使用别名排序,无需重复调用window方法 f.col('time_window').asc(), f.col('Hash_ct').desc() ) staticCountedHash.show()
补充说明
你之前的示例代码可以正常运行,大概率是旧代码排序时没有额外调用空参数的f.window(),直接使用了窗口列别名或者按字段位置排序,因此不会触发参数缺失报错。
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

