我正在尝试为RDD编写自定义的推理代码。我想得到RDD行中每个元素的数据类型列表。但是当我尝试使用mapper时,看起来每个元素的类型(x)都会导致错误,因为从动作或转换引用RDD。有什么工作要做吗?
尝试#1
rdd = sc.parallelize([[1,2,3,4],[1,2,3,4]])
def type(partition):
for row in partition:
for val in row:
yield {'a':type(val)}
dttype = sample.mapPartitions(type)
dttype.collect()
如果我收集,这就是我得到的
例外:您似乎正在尝试广播RDD或 引用动作或转换中的RDD。 RDD转换 并且操作只能由驱动程序调用,而不能在其他内部调用 变换;例如,rdd1.map(lambda x:rdd2.values.count()* x)因为值转换和计数动作无效 无法在rdd1.map转换中执行。更多 信息,请参阅SPARK-5063。