我需要閱讀下面提供的具有逗號分隔值的行,并生成一個鍵值對 RDD,如輸出中所示。我是新手,不勝感激。
輸入:
R-001, A1, 10, A2, 20, A3, 30
R-002, X1, 20, Y2, 10
R-003, Z4, 30, Z10, 5, N12, 38
輸出:
R-001, A1
R-001, A2
R-001, A3
R-002, X1
R-002, Y2
R-003, Z4
R-003, Z10
R-003, N12
代碼:
lines = spark.parallelize([
"R-001, A1, 10, A2, 20, A3, 30",
"R-002, X1, 20, Y2, 10",
"R-003, Z4, 30, Z10, 5, N12, 38"])
uj5u.com熱心網友回復:
您可以flatMap在linesRDD和每行提取基于關鍵字和值通過分裂,。
from typing import Tuple, List
lines = spark.parallelize([
"R-001, A1, 10, A2, 20, A3, 30",
"R-002, X1, 20, Y2, 10",
"R-003, Z4, 30, Z10, 5, N12, 38"])
def processor(line: str) -> List[Tuple[str, str]]:
tokens = line.split(",")
key = tokens[0].strip()
return [(key, v.strip()) for v in tokens[1::2]]
lines.flatMap(processor).collect()
輸出
[('R-001', 'A1'),
('R-001', 'A2'),
('R-001', 'A3'),
('R-002', 'X1'),
('R-002', 'Y2'),
('R-003', 'Z4'),
('R-003', 'Z10'),
('R-003', 'N12')]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/392875.html
