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 | | |+ - - - - - - - - - - + - - - + - - - + - - - +