flatMap 抛出错误-unicode 项目没有属性 flatMap
flatMap throws error -unicode item does not have attribute flatMap
给定一个输入 rdd 或 form
1: 6 7
2: 5
我怎样才能得到另一个形式的rdd
1 6
1 7
2 5
等等..
失败消息 unicode 项目没有属性 flatMap
def get_str(x,y):
..code to flatmap
return op
text = sc.textFile(inputs)
res = text.map(lambda l:l.split(":")).map(lambda (x,y):get_str(x,y))
我不是很喜欢 Python,但看起来您正试图在 flatMap
中使用您的 map
,但是您需要将 map
替换为 flatMap
。在 Scala 中,我会这样做:
val text = sc.textFile(inputs)
val res = text.map(l => l.split("[\s:]+"))
.flatMap(list => list.drop(1).map(i => (list(0), i)))
请注意,我拆分了 " "
和 ":"
以获得值列表。
Python中的相同内容:
def to_seq(s):
k, vs = s.split(":")
for v in vs.split():
yield k, v
text = sc.parallelize(["1: 6 7", "2: 5"])
res = text.flatMap(to_seq)
res.take(3)
## [('1', '6'), ('1', '7'), ('2', '5')]
给定一个输入 rdd 或 form
1: 6 7
2: 5
我怎样才能得到另一个形式的rdd
1 6
1 7
2 5
等等..
失败消息 unicode 项目没有属性 flatMap
def get_str(x,y):
..code to flatmap
return op
text = sc.textFile(inputs)
res = text.map(lambda l:l.split(":")).map(lambda (x,y):get_str(x,y))
我不是很喜欢 Python,但看起来您正试图在 flatMap
中使用您的 map
,但是您需要将 map
替换为 flatMap
。在 Scala 中,我会这样做:
val text = sc.textFile(inputs)
val res = text.map(l => l.split("[\s:]+"))
.flatMap(list => list.drop(1).map(i => (list(0), i)))
请注意,我拆分了 " "
和 ":"
以获得值列表。
Python中的相同内容:
def to_seq(s):
k, vs = s.split(":")
for v in vs.split():
yield k, v
text = sc.parallelize(["1: 6 7", "2: 5"])
res = text.flatMap(to_seq)
res.take(3)
## [('1', '6'), ('1', '7'), ('2', '5')]