我正在测试Spark的地图和平面地图功能。我基本上需要稍后使用Flatmap将Spark Dataframe的行转换为不同的格式。
我创建了一个虚拟数据框,如下所示:
Test code to check Flatmap
In [16]:
d={"a":[1,2,3],"b":[1.1,2.3,32],"c":[0,1,1]}
df=pd.DataFrame(d)
sdf=sqlContext.createDataFrame(df)
sdf.show(5)
+---+----+---+
| a| b| c|
+---+----+---+
| 1| 1.1| 0|
| 2| 2.3| 1|
| 3|32.0| 1|
+---+----+---+
然后我编写了以下函数来对Spark的每个Row对象进行一些计算。我想打印并检查每一步发生的事情。
In [24]:
#print [x.asDict() for x in tmp]
def ex_map(x):
print x
y = x.asDict()
print y
sum_k = sum([y[k] for k in y.keys()] )
return (k,sum_k)
print sdf.map(ex_map).take(4)
[('b', 2.1), ('b', 5.3), ('b', 36.0)]
就像我想要打印传递给map函数的第一个Row对象一样。
然后我想打印这个行对象的字典。
然而,最终结果我没有看到这两个打印命令结果。
出了什么问题?