gpt4 book ai didi

python - RDD 转换图,Python

转载 作者:行者123 更新时间:2023-12-01 04:04:16 24 4
gpt4 key购买 nike

是否可以将Spark的map方法中除第一个元素之外的所有元素都转换为float(double),而不用for循环进行迭代?伪代码如下:

input = sc.textFile('file.csv').map(lambda line: line.split(',')) #create a rdd<list>
test = input.map(lambda line: line[0] else float(line)) #convert all elements of the list to float excepted the first one

最佳答案

这是可能的,尽管这可能不是一个好的做法。 RDD 是同构对象集合。如果您期望某种标题,最好将其删除,而不是将其完全拖过。不过你可以尝试这样的事情:

from itertools import islice

# Dummy data
with open("/tmp/foo", "w") as fw:
fw.writelines(["foo", "1.0", "2.0", "3.0"])

def process_part(i, iter):
if i == 0:
# We could use enumerate as well
for x in islice(iter, 1):
yield x
for x in iter:
yield float(x)

(sc.textFile("foo.txt")
.mapPartitionsWithIndex(process_part)
.collect())
## ['"foo"', 1.0, 2.0, 3.0, 4.0]

如果您期望空分区,您首先计算元素:

rdd.mapPartitionsWithIndex(lambda i, iter: [(i,  sum(1 for _ in iter))]).collect()

并将 0 替换为第一个非空分区的索引。

关于python - RDD 转换图,Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35937788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com