通过键序列化L <v>中的每个值,将RDD(K,L <v>)配对到多个文件

时间:2015-12-16 00:24:39

标签: python apache-spark

我有一个带有一组键和值列表的PairRDD,列表中的每个值都是一个json,我已经加载了我的spark应用程序的开头,如何迭代我的对RDD中列表的每个值将其转换为字符串,然后将密钥的全部内容保存到文件中?

我的输入文件如下:

{cat:'red',value:'asd'}
{cat:'green',value:'zxc'}
{cat:'red',value:'jkl'}

PairRDD看起来像

('red', [{cat:'red',value:'asd'},{cat:'red',value:'jkl'}])
('green', [{cat:'green',value:'zxc'}])

所以你可以看到我想将值列表中的每个json序列化为字符串,这样我就可以轻松地保存AsTextFile(),当然我正在尝试为每个键保存一个单独的文件

我来到这里的方式:

rawcatRdd = sc.textFile("hdfs://x.x.x.../unstructured/cat-0-500.txt")
import json
categoriesJson = rawcatRdd.map(lambda x: json.loads(x))
categories = categoriesJson

catByDate = categories.map(lambda x: (x['cat'], x)
catGroup = catByDate.groupByKey()
catGroupArr = catGroup.mapValues(lambda x : list(x))

理想情况下,我想创建一个如下所示的 cat-red.txt

{cat:'red',value:'asd'}
{cat:'red',value:'jkl'}

和其他键相同。

I already looked at this answer但是在我将内容保存到文件之前,我稍微迷失了作为主机来处理列表中的每个值

提前致谢!

0 个答案:

没有答案