मुझे नीचे दी गई पंक्तियों को पढ़ने की जरूरत है जिसमें अल्पविराम से अलग किए गए मान हैं और आउटपुट में दिखाए गए अनुसार एक महत्वपूर्ण मूल्य जोड़ी आरडीडी उत्पन्न करते हैं। मैं किसी भी मार्गदर्शन की सराहना करने के लिए नया हूं।

इनपुट:

    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"])
     
0
user16308738 25 पद 2021, 12:47

1 उत्तर

सबसे बढ़िया उत्तर

आप flatMap को lines RDD पर और प्रत्येक पंक्ति के लिए , के आधार पर विभाजित करके कुंजी और मान निकाल सकते हैं।

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')]
1
Nithish 25 पद 2021, 13:02