scala - 如何在SCALA中访问Row RDD中的元素

标签 scala apache-spark

我的行 RDD 如下所示:

Array[org.apache.spark.sql.Row] = Array([1,[example1,WrappedArray([**Standford,Organisation,NNP], [is,O,VP], [good,LOCATION,ADP**])]])

我通过将数据帧转换为 rdd 得到了这个,数据帧模式是:

root
 |-- article_id: long (nullable = true)
 |-- sentence: struct (nullable = true)
 |    |-- sentence: string (nullable = true)
 |    |-- attributes: array (nullable = true)
 |    |    |-- element: struct (containsNull = true)
 |    |    |    |-- tokens: string (nullable = true)
 |    |    |    |-- ner: string (nullable = true)
 |    |    |    |-- pos: string (nullable = true)

现在如何访问行rdd中的元素,在数据框中我可以使用df.select(“sentence”)。我期待访问 stanford/其他嵌套元素等元素。

最佳答案

正如 @SarveshKumarSingh 在评论中所写,您可以访问 RDD[Row] 中的行。就像访问 RDD 中的任何其他元素一样。可以通过多种方式访问​​行中的元素。要么直接调用 get像这样:

rowRDD.map(row => row.get(2).asInstanceOf[MyType])

或者如果它是内置类型,您可以避免类型转换:

rowRDD.map(row => row.getList(4))

或者您可能只想使用模式匹配,例如:

rowRDD.map{case Row(field1: Long, field2: MyType) => field2}

我希望这有帮助:)

关于scala - 如何在SCALA中访问Row RDD中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39010473/

相关文章:

scala - `Future[Option[Future[Option[X]]]]` 变为 `Future[Option[X]]`

csv - 根据以下逻辑加载数据

apache-spark - Spark 覆盖保存模式是原子的吗?

file-upload - 从 Apache Spark 分段上传到 Amazon S3

scala - Scala 列表中的最后一个元素?

scala - 如何在反序列化期间初始化 transient 字段?

Scala 按分隔符拆分序列或列表

python - PySpark 在 RDD 上运行多个函数

scala - 非法状态异常 : _spark_metadata/0 doesn't exist while compacting batch 9

eclipse - 使用 scala 将 spark 作业从 eclipse 提交到 yarn-client