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):…返回pd。merge_asof(l,r,在=“時間”,通過=“id”)> > >df1。groupby(“id”)。cogroup(df2。groupby(“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.int32和numpy.float64。數據仍將作為兩個傳遞pandas.DataFrame從最初的火花DataFrames包含所有列。
> > >defasof_join(k,l,r):…如果k= =(1):…返回pd。merge_asof(l,r,在=“時間”,通過=“id”)…其他的:…返回pd。DataFrame(列=(“時間”,“id”,“v1”,“v2”])> > >df1。groupby(“id”)。cogroup(df2。groupby(“id”))。applyInPandas(…asof_join,“時間int, int id, v1加倍,v2字符串“)。顯示()+ - - - - - - - - - - + - - - + - - - + - - - +v2 v1 | | | | |時間id+ - - - - - - - - - - + - - - + - - - + - - - +x 1.0 | 20000101 | 1 | | |x 3.0 | 20000102 | 1 | | |+ - - - - - - - - - - + - - - + - - - + - - - +