gpt4 book ai didi

scala - 如何拆分逗号分隔的字符串并在 Spark Scala 数据框中获取 n 个值?

转载 作者:行者123 更新时间:2023-12-04 15:18:47 24 4
gpt4 key购买 nike

如何仅从 arraytype 中获取 2 个数据Spark Scala 中的列?
我得到的数据是 val df = spark.sqlContext.sql("select col1, col2 from test_tbl") .

我有如下数据:

col1  | col2                              
--- | ---
a | [test1,test2,test3,test4,.....]
b | [a1,a2,a3,a4,a5,.....]

我想获得如下数据:
col1| col2
----|----
a | test1,test2
b | a1,a2

当我在做 df.withColumn("test", col("col2").take(5))它不工作。它给出了这个错误:

value take is not a member of org.apache.spark.sql.ColumnName



如何按上述顺序获取数据?

最佳答案

您可以使用数组列的 apply函数使每个单独的项目达到某个索引,然后使用 array 构建一个新数组功能:

import spark.implicits._
import org.apache.spark.sql.functions._

// Sample data:
val df = Seq(
("a", Array("a1", "a2", "a3", "a4", "a5", "a6")),
("a", Array("b1", "b2", "b3", "b4", "b5")),
("c", Array("c1", "c2"))
).toDF("col1", "col2")

val n = 4
val result = df.withColumn("col2", array((0 until n).map($"col2"(_)): _*))

result.show(false)
// +----+--------------------+
// |col1|col2 |
// +----+--------------------+
// |a |[a1, a2, a3, a4] |
// |a |[b1, b2, b3, b4] |
// |c |[c1, c2, null, null]|
// +----+--------------------+

请注意,这将“填充”结果 null s 用于数组小于 n 的记录.

关于scala - 如何拆分逗号分隔的字符串并在 Spark Scala 数据框中获取 n 个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45087043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com