pyspark:将RDD作为参数传递给类

时间:2016-06-29 11:42:56

标签: python apache-spark pyspark

您是否可以帮助从作为参数传递给类构造函数的行中检索值(或者),请提出更好的方法。我的目标是验证所有领域的价值。每个字段都有不同的验证标准。

这就是我在做的事情:

我已经使用HiveContext读取了hive表并保存在数据帧中。我将此数据帧转换为RDD。我将RDD的每一行传递给类构造函数。

class Normalizer():
    def __init__(self,val):
        logging.info("Normalizer start...%s"%val)

val(在控制台中)看起来像:

  

[行(id = u' 12',col1 = u' xx',col2 = u' yy',...)]

我为Normalizer中的每个字段编写了一个解析方法。 现在我必须将每个字段值传递给相应的方法并验证数据。

如何获得该领域的每个价值? val.id不起作用。

或者请建议您是否有更好的方法。

谢谢!!!

1 个答案:

答案 0 :(得分:1)

  • 看起来你的行在列表中:

     val[0].id
    
  • 为什么不在这里使用一个功能?您可以插入布尔值并过滤掉错误的行

    def normalize(row):
        .... validate row.id ...
        return Row(validated = is_validated, id=row.id)
    
    myrdd.map(normalize)