pyspark.sql.PandasCogroupedOps.applyInPandas

PandasCogroupedOps。 applyInPandas ( 函数:PandasCogroupedMapFunction,模式:联盟(pyspark.sql.types.StructType,str] )→pyspark.sql.dataframe.DataFrame

一个函数适用于每个cogroup使用熊猫和返回结果DataFrame

函数需要两个pandas.DataFrame年代和返回另一个pandas.DataFrame。对于每个cogroup的,所有列在一起作为一个传递pandas.DataFrame用户函数和返回pandas.DataFrame结合在一起作为一个DataFrame

模式应该是一个StructType返回的描述模式pandas.DataFrame。返回的列标签pandas.DataFrame必须匹配的字段名称定义模式如果指定为字符串,或匹配位置如果不是字符串字段数据类型,例如整数指数。返回的长度pandas.DataFrame可以任意的。

参数
函数 函数

一个Python本机函数需要两个pandas.DataFrame年代,和输出pandas.DataFrame,或者接受一个元组(分组关键字)和两只熊猫DataFrame年代,输出一个熊猫DataFrame

模式 pyspark.sql.types.DataType或str

的返回类型函数在PySpark。值可以是pyspark.sql.types.DataType对象或DDL-formatted类型字符串。

笔记

这个函数需要一个完整的洗牌。cogroup将所有的数据加载到内存中,因此用户应该意识到潜在的伯父风险如果数据倾斜和某些群体是装入内存太大。

这个API是实验性的。

例子

> > >pyspark.sql.functions进口pandas_udf> > >df1=火花createDataFrame(((20000101,1,1.0),(20000101,2,2.0),(20000102,1,3.0),(20000102,2,4.0)),(“时间”,“id”,“v1”))> > >df2=火花createDataFrame(((20000101,1,“x”),(20000101,2,“y”)),(“时间”,“id”,“v2”))> > >defasof_join(l,r):返回pdmerge_asof(l,r,=“时间”,通过=“id”)> > >df1groupby(“id”)cogroup(df2groupby(“id”))applyInPandas(asof_join,模式=“时间int, int id, v1加倍,v2字符串“)显示()+ - - - - - - - - - - + - - - + - - - + - - - +v2 v1 | | | | |时间id+ - - - - - - - - - - + - - - + - - - + - - - +x 1.0 | 20000101 | 1 | | |x 3.0 | 20000102 | 1 | | || 20000101 | 2 | 2.0 | || 20000102 | 2 | 4.0 | |+ - - - - - - - - - - + - - - + - - - + - - - +

另外,用户可以定义一个函数,这个函数有三个参数。在这种情况下,分组密钥(s)将作为第一个参数传递,数据将作为第二个和第三个参数传递。分组密钥(s)将被传递的tuple numpy数据类型,例如,numpy.int32numpy.float64。数据仍将作为两个传递pandas.DataFrame从最初的火花DataFrames包含所有列。

> > >defasof_join(k,l,r):如果k= =(1):返回pdmerge_asof(l,r,=“时间”,通过=“id”)其他的:返回pdDataFrame(=(“时间”,“id”,“v1”,“v2”])> > >df1groupby(“id”)cogroup(df2groupby(“id”))applyInPandas(asof_join,“时间int, int id, v1加倍,v2字符串“)显示()+ - - - - - - - - - - + - - - + - - - + - - - +v2 v1 | | | | |时间id+ - - - - - - - - - - + - - - + - - - + - - - +x 1.0 | 20000101 | 1 | | |x 3.0 | 20000102 | 1 | | |+ - - - - - - - - - - + - - - + - - - + - - - +