程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了pyspark UDF 返回 AttributeError: 'DataFrame' 对象没有属性 'sort_values'大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决pyspark UDF 返回 AttributeError: 'DataFrame' 对象没有属性 'sort_values'?

开发过程中遇到pyspark UDF 返回 AttributeError: 'DataFrame' 对象没有属性 'sort_values'的问题如何解决?下面主要结合日常开发的经验,给出你关于pyspark UDF 返回 AttributeError: 'DataFrame' 对象没有属性 'sort_values'的解决方法建议,希望对你解决pyspark UDF 返回 AttributeError: 'DataFrame' 对象没有属性 'sort_values'有所启发或帮助;

我的程序遇到了困难,我正在尝试将 UDF 应用于数据帧并根据我的标题收到错误消息。这是我的代码

import pandas as pd
import datetiR_614_11845@e as dt
import numpy as np
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType

df = pd.DataFrame({
              'ID':[1,2,2],'dt':[pd.timestamp.Now(),pd.timestamp.Now(),pd.timestamp.Now()]})
df.head()

def FlagUsers(df,IDs,tm,gap):
  df=df.sort_values([IDs,tm])
  df[IDs]=df[IDs].astype(str)
  df['timediff'] = df.groupby(IDs)[tm].diff()
  df['prevtime']= df.groupby (IDs)[tm].shift()
  df['prevuser']= df[IDs].shift()
  df['prevuser'].fillna(0,inplace=TruE)
  df['timediff']=df.timediff/ pd.timedelta('1 minute')
  df['timediff'].fillna(99,inplace=TruE)
  df['flagnew']=np.where((df.timediff<gap) & (df['prevuser']==df[IDs]),'exisTing','new' )
  df.loc[df.flagnew == 'new','sessnum'] = df.groupby([IDs,'flagnew']).cumcount()+1
  df['sessnum']=df['sessnum'].fillna(method='ffill')
  df['session_key']= df[IDs].astype(str)+"_"+df['sessnum'].astype(str)
  df.drop(['prevtime','prevuser'],axis =1,inplace= TruE)
  arr=df['session_key'].values
  return arr

# Python Function works fine:
FlagUsers(df,'ID','dt',5)


s_df = spark.createDataFrame(df)
s_df.show()

spark.udf.register("FlagUsers",FlagUsers)
s_df = s_df.withcolumn('session_key',FlagUsers(s_df,5))

我的函数在 python 中运行良好,但是当我尝试在 Spark 中运行它时它不起作用?如果这是一个愚蠢的问题,我真的很抱歉!谢谢和祝福

解决方法

pyspark udf 与其他原生 python udf 不同,它有特定的要求,

请尝试使用 pandas udf。

它快好几倍 https://docs.databricks.com/spark/latest/spark-sql/udf-python-pandas.html

大佬总结

以上是大佬教程为你收集整理的pyspark UDF 返回 AttributeError: 'DataFrame' 对象没有属性 'sort_values'全部内容,希望文章能够帮你解决pyspark UDF 返回 AttributeError: 'DataFrame' 对象没有属性 'sort_values'所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。