【问题标题】:Spark split comma separated row array into first value and the rest [duplicate]Spark将逗号分隔的行数组拆分为第一个值,其余的[重复]
【发布时间】:2021-06-24 13:40:23
【问题描述】:

我有一个数据集:

val raw_data = sc.parallelize(Array(
    "Batch1, i, 10, j, 20",
    "Batch2, i, 20, k, 30, m,50",
    "Batch3, i, 30, n, 20, j, 30"
))

在进一步处理数据之前,我想将第一个条目或每一行拆分到它的列中。我试过了:

raw_data.map(x => x.split(",")).map(x=>(x(0), x))

然后我得到:

"Batch1", "Batch1, i, 10, j, 20",
"Batch2", "Batch2, i, 20, k, 30, m,50",
"Batch3", "Batch3, i, 30, n, 20, j, 30"

当我在 python 中工作时,我可以像这样进行索引:

x(1:)

选择第一个值之后的所有内容。 scala中有类似的东西吗?

raw_data.map(x => x.split(",")).map(x=>(x(0), x(1:)))

【问题讨论】:

    标签: scala apache-spark rdd


    【解决方案1】:

    您可以使用headtail

    raw_data.map(x => x.split(", ")).map(x=>(x.head, x.tail))
    

    如果您不想在结果中出现不必要的空格,您可能希望在 ", " 而不是 "," 上进行拆分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2021-08-31
      • 2018-07-29
      • 2017-01-31
      • 2013-10-05
      相关资源
      最近更新 更多