2017-03-17 102 views
0

我在下面的分隔符键值输入数据集,从输入数据中获取值

key1:value1|key2:value2|key3:value3 
key1:value4|key2:value5|key3:value6 

我想创建一个格式RDD /数据帧作为

value1|value2|value3 
value4|value5|value6 

我想这使用flatmap到分离每个项目和映射从记录中提取值,然后我得到我的输出在不同的行。

回答

1

可以映射这样的:

(rdd 

    # Split by "|" and then for each item by ":" 
    .map(lambda xs: [x.split(":")[1] for x in xs.split("|")]) 
    # Convert to tuple 
    .map(tuple) 
    .toDF(["key1", "key2", "key3"])) 
+0

谢谢....我缺少的元组的一部分。 – user491

+0

如果我有一些行像,其中一些字段包含分隔符如 - key1:value1 | key2:value2 | key3:bad |值,该怎么办?我试图用正则表达式 - ((?<!\^\ ^)\^\ ^(?!\^\ ^))但它不起作用。 – user491