Spark将逗号分隔的行数组拆分为第一个值,其余的[重复]
Posted
技术标签:
【中文标题】Spark将逗号分隔的行数组拆分为第一个值,其余的[重复]【英文标题】:Spark split comma separated row array into first value and the rest [duplicate] 【发布时间】: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:)))
【问题讨论】:
【参考方案1】:您可以使用head
和tail
:
raw_data.map(x => x.split(", ")).map(x=>(x.head, x.tail))
如果您不想在结果中出现不必要的空格,您可能希望在 ", "
而不是 ","
上进行拆分。
【讨论】:
以上是关于Spark将逗号分隔的行数组拆分为第一个值,其余的[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Spark 中读取最后一列作为值数组的 CSV(并且值在括号内并用逗号分隔)