scala - 在 Apache Spark 中将 Dataframe 的列值提取为列表

标签 scala apache-spark apache-spark-sql

我想将数据框的字符串列转换为列表。我从Dataframe API中可以找到的是RDD,所以我尝试先将其转换回RDD,然后将toArray函数应用于RDD。在这种情况下,长度和 SQL 工作得很好。然而,我从 RDD 得到的结果在每个元素周围都有方括号,就像这样的 [A00001]。我想知道是否有适当的方法将列转换为列表或删除方括号。

如有任何建议,我们将不胜感激。谢谢!

最佳答案

这应该返回包含单个列表的集合:

dataFrame.select("YOUR_COLUMN_NAME").rdd.map(r => r(0)).collect()

如果没有映射,您只会获得一个 Row 对象,其中包含数据库中的每一列。

请记住,这可能会为您提供任何类型的列表。 Ï如果要指定结果类型,可以在 r => r(0).asInstanceOf[YOUR_TYPE] 映射中使用 .asInstanceOf[YOUR_TYPE]

附注由于自动转换,您可以跳过 .rdd 部分。

关于scala - 在 Apache Spark 中将 Dataframe 的列值提取为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32000646/

相关文章:

python - 高效的字符串后缀检测

Scala 类型参数化,Shapeless - 找不到参数 Generic 的隐式值

algorithm - Scala 与 Java 性能

python - 在 PySpark 中使用 Apache Spark 数据帧删除重音的最佳方法是什么?

scala - Spark CSV 包无法处理字段中的\n

python - PySpark:将不同的窗口大小应用于 pyspark 中的数据帧

scala - 在 Spark 流中使用过滤器转换后,如何在函数中返回两个 DStream?

mysql - 原始 SQL 查询中多种类型的 Scala Slick 隐式转换

macos - 在 Spark 和 Hadoop 之间共享数据(Mahout)

apache-spark - 如何通过 pyspark 将十六进制数据插入 Cassandra 中的 blob 数据类型列