从pyspark.sql.GroupedData查找groupby列(访问df._jgd JavaObject?)

时间:2019-07-01 23:26:42

标签: pyspark

编写一个函数,该函数需要使用创建pyspark.sql.GroupedData时指定的列。这些列似乎存储在类的._jgd属性中,该属性是一个Java对象。我有一个hack /解决方法(如下),但想知道是否有一种直接访问java对象内容的方法。有没有“好的/最好的”方法,建议什么?

import pandas as pd

# Sample data 
df = pd.DataFrame({'gcol1': ['a1','a1','a1','b2','b2','cc'],
                   'x1': [1,2,3,4,5,6],
                   'x2': [1,2,3,4,5,6]})
df = spark.createDataFrame(df)
df = df.groupby('gcol1')

需要带有['gcol1']的列表。

我的“黑客”作品是这样的:

grouping_cols = df.count().columns
grouping_cols.reverse()
grouping_cols.remove('count')
grouping_cols.reverse()
print(grouping_cols)

['gcol1']

这种hacky解决方案通常会很好,但是最好从对象访问信息。 ._jgd属性似乎具有必需的信息,但这是一个JavaObject。

print(df._jgd)
RelationalGroupedDataset: [grouping expressions: [gcol1], value: [gcol1: string, x1: bigint ... 1 more field], type: GroupBy]

0 个答案:

没有答案