Я ничего не знаю о Spark, но думаю, что мы можем лучше понять это, взглянув на этот пример из документации Spark API в Clojure:
// To create Dataset<Row> using SparkSession
Dataset<Row> people = spark.read().parquet("...");
Dataset<Row> department = spark.read().parquet("...");
people.filter(people.col("age").gt(30))
.join(department, people.col("deptId").equalTo(department.col("id")))
.groupBy(department.col("name"), people.col("gender"))
.agg(avg(people.col("salary")), max(people.col("age")));
Мы можем предположить,что у вас уже есть DataSet
, и вы хотите назвать .groupBy
на нем.Вероятно, вы вызываете метод , который принимает Column...
в качестве аргумента .Вы были на правильном пути в том, что variadic методы аргументов в Java собирают аргументы в виде массива, так что это похоже на получение Column[]
в качестве аргумента.
Проблема в том, какполучить Column
из набора данных?Кажется, вы можете позвонить dataset.col(String colName)
, чтобы получить его.Собираем все воедино:
(.groupBy my-dataset (into-array Column [(.col my-dataset "a-column")]))
Опять же, у меня нет способа проверить это, но я думаю, что это должно помочь.