在Pyspark中使用panda函数



我正试图用Pyspark重写我的Python脚本(Pandas(,但我找不到一种方法来更有效地应用我的Pandas函数:

我的功能如下:

def decompose_id(id_flight):

my_id=id_flight.split("_")
Esn=my_id[0]
Year=my_id[3][0:4]
Month=my_id[3][4:6]
return Esn, Year, Month
def reverse_string(string):
stringlength=len(string) # calculate length of the list
slicedString=string[stringlength::-1] # slicing 
return slicedString

我想将第一个函数应用于数据帧的一列(在Pandas中,我得到一行三个元素(第二个函数用于验证数据帧的列的条件

有没有一种方法可以使用Pyspark数据帧来应用它们?

您可以将这些函数作为UDF应用于Spark列,但效率不是很高。

以下是执行任务所需的功能:

  • reverse:使用它来替换您的函数reverse_string
  • split:使用是替换my_id=id_flight.split("_")
  • getItem:用于获取拆分列表my_id[3]中的项目
  • substr:替换python[0:4]中的切片

只需将这些火花函数组合起来即可重新创建相同的行为。

如果您想利用pandas功能,一种方法是使用-pandas API和groupBy

它为您提供了一种将每个groupBy集视为panda数据帧的方法,您可以在该数据帧上实现功能。

然而,由于它的Spark,模式强制执行是非常必要的,因为您将浏览链接中提供的示例以及

实现示例可以在这里找到

对于琐碎的任务,比如反转字符串,选择内置的Spark函数,否则UDF的

最新更新