Я сам нашел способ решить эту проблему. Это можно сделать в два простых шага: -
- Сначала нам нужно использовать explode () в SparkR, чтобы получить все содержимое в
список из этого столбца.
- Далее нам нужно использовать windowPartitionBy () в SparkR, чтобы создать
разделы, а затем мы можем получить все, что мы хотим на основе наших
требования, такие как row_number (), dens_rank (), rank () и т. д. Как и здесь, нам нужен первый элемент списка, поэтому я использовал функцию row_number.
Фрагмент:
data.select <- SparkR::select(data,c("parsed.nid","parsed.status","parsed.sections"))
names(data.select) <- c("nid","status","sections")
categories <- SparkR::select(data.select,data.select$nid,data.select$status,explode(data.select$sections))
ws <- SparkR::orderBy(SparkR::windowPartitionBy("nid","status","sections"),"nid")
data.final <- SparkR::mutate(categories,row_num = over(row_number(), ws))
##If we want to get the first element of the array.
data.final <- data.final[data.final$row_num==1,]
Пожалуйста, добавьте ваши предложения.