【发布时间】:2015-09-30 23:47:06
【问题描述】:
我的第一个 RDD 中的数据是这样的
1253
545553
12344896
1 2 1
1 43 2
1 46 1
1 53 2
现在前 3 个整数是我需要广播的一些计数器。 之后所有的行都具有相同的格式,如
1 2 1
1 43 2
在函数中对它们进行一些计算后,我会将 3 个计数器之后的所有这些值映射到一个新的 RDD。 但我无法理解如何分离前 3 个值并正常映射其余值。
我的Python代码是这样的
documents = sc.textFile("file.txt").map(lambda line: line.split(" "))
final_doc = documents.map(lambda x: (int(x[0]), function1(int(x[1]), int(x[2])))).reduceByKey(lambda x, y: x + " " + y)
它仅在前 3 个值不在文本文件中但与它们一起出现错误时才有效。
我不想跳过前 3 个值,而是将它们存储在 3 个广播变量中,然后在 map 函数中传递剩余的数据集。
是的,文本文件只能采用该格式。我无法删除这 3 个值/计数器
Function1 只是进行一些计算并返回值。
【问题讨论】:
-
但我不想跳过,我想将这 3 个值存储在 3 个不同的变量中,然后处理数据集中的所有其他数据。我不想将这 3 个值传递给我上面描述的 map 函数。
-
加载数据:
raw = sc.textFile("file.txt"),取您要用于广播的前三行:header = raw.take(3),使用链接答案中描述的方法之一跳过标题并处理其余部分。跨度> -
是的,这是正确的。我会试试的,谢谢..
-
我试过了。但由于标头包含 3 个值,因此它不起作用。链接答案中的方法不处理多个值。
标签: python apache-spark