如何取消嵌套数据并从 SparkR 中的数组中获取第一个元素?

How to unnest data and obtain the first element from an array in SparkR?

我是 SparkR 的新手,正在尝试数据的第一步 preparation.The 数据集就是这种类型。我试图子集和 select 重要列。我的问题是如何 select 来自数组元素的列。我正在尝试这样的事情,它允许我通过取消嵌套数据来 select 列,但无法取消嵌套和展平数组以获得它的第一个元素。有帮助 Link

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

我自己找到了解决这个问题的方法 issue.This 可以通过两个简单的步骤完成:-

  1. 首先我们需要在SparkR中使用explode(),获取其中的所有内容 该列中的列表。
  2. 接下来,我们需要使用SparkR中的windowPartitionBy()创建一个 分区,然后我们可以根据我们的 row_number(),dense_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,]

也请提出您的建议。