Как раскрутить данные и получить первый элемент из массива в SparkR? - PullRequest
0 голосов
/ 03 июля 2018

Я новичок в SparkR и пробую первые шаги подготовки данных. Набор данных является чем-то в этом роде. Я пытался установить подмножество и выбрать значимые столбцы. У меня вопрос, как я могу выбрать столбец из элемента массива. Я пытался что-то вроде этого, что позволило мне выбрать столбцы путем вложения данных, но не смог развернуть и сгладить массив, чтобы получить его первый элемент. Полезно Ссылка

select.col <- SparkR::select(data,c("parsed.nid","parsed.status","parsed.sections.element[0].name"))

1 Ответ

0 голосов
/ 24 августа 2018

Я сам нашел способ решить эту проблему. Это можно сделать в два простых шага: -

  1. Сначала нам нужно использовать explode () в SparkR, чтобы получить все содержимое в список из этого столбца.
  2. Далее нам нужно использовать 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,]

Пожалуйста, добавьте ваши предложения.

...