2016-06-29 55 views
0

您能否幫助從作爲參數傳遞給類構造函數(或)的行檢索值,請提供更好的方法。我的目標是驗證所有領域的價值。每個字段都有不同的驗證標準。pyspark:將RDD作爲參數傳遞給類

這是我在做什麼:

我已閱讀使用HiveContext蜂巢表,並保存在數據幀。我將這個數據幀轉換爲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
  • 它看起來像你的行是一個列表裏:

    val[0].id 
    
  • 爲什麼不能在這裏使用的功能?您可以插入一個布爾值,並過濾掉錯誤行

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

爲了您的第一點,該行是列表裏面的原因可能是因爲她用'採取()'或'collect'。如果她通過地圖聲明訪問它,它不會處於亮起狀態。而你的第二顆子彈看起來像採取 – David

+0

的方法謝謝。我採取了第二種方法。 – Aavik

相關問題