2016-12-30 3 views
2

Ich habe einige leere Zeilen in einer RDD, die ich entfernen möchte. Wie kann ich es tun?So entfernen Sie leere Zeilen aus einem RD RD RD

Ich habe versucht, die unten, aber es funktioniert nicht. Ich bin immer noch die leeren Reihen

json_cp_rdd = xform_rdd.map(lambda (key, value): get_cp_json_with_planid(key, value)).filter(
      lambda x: x is not None).filter(
      lambda x: x is not '') 

[u '', u '', u '', u '', u '', u '', u '', u '', u , Sie, Sie, Sie, Sie, Sie, Sie, Sie, Sie , Sie, Sie, Sie, Sie, Sie, Sie, Sie , du, du, du, du, du, du, Sie, du, du, du, du, du, du, du , Sie, Sie, Sie, Sie, Sie, Sie, Sie, Sie , du bist, du, du, du, du, du, du, du, Sie, Sie, Sie, Sie, Sie, Sie, Sie, '', du ', du, Sie, Sie, Sie, Sie, Sie, Sie, Sie, Sie '', du, du, du, du, du, du, du, du , Sie, Sie, Sie, Sie, Sie, Sie, Sie, Sie, Sie , du, du, du, du, du, du, du, Sie, Sie, Sie, Sie, Sie, Sie, Sie, Sie, Sie Sie, du, du, du, du, du, du , Sie, Sie, Sie, Sie, Sie, u '[{"PLAN_ID" : "d2031aed-175f-4346-af31-9d05bfd4ea3a", "CostTotalInvEOPAmount": 0.0, "StoreCount": 0, "WeekEndingData": "2017-07-08", "UnitTotalInvBOPQuantity": 0.0, "PriceStatus": 1 , "UnitOnOrderQuantity": null, "CostTotalInvBOPAmount": 0.0, "RetailSalesAmount": 0.0, "UnitCostAmount": 0.0, "CostReceiptAmount": 0.0, "CostSalesAmount": 0.0, "UnitSalesQuantity": 0.0, "UnitReceiptQuantity": 0.0, "UnitTotalInvEOPQuantity": 0.0, "CostOnOrderAmount": null }]‘, U '', U '', U '', U '', U '', U '', U '', u '', u '']

+0

Sie Schema hinzufügen für 'xform_rdd.map (Lambda (Schlüssel, Wert): get_cp_json_with_planid (Schlüssel, Wert))'? – mrsrinivas

+0

Ich bin nicht sicher, @mrsrinivas, wenn das in der RDD getan werden kann. Ich kann es tun, während Sie es später in ein DF –

+0

umwandeln, markieren Sie Ihre Antwort als das Problem gelöst. – mrsrinivas

Antwort

2

ersetzt filter(lambda x: x is not '') mit filter(lambda x: x is not u'') und es funktionierte

5

is überprüft Objektidentität nicht Gleichheit. In Python 2.x können Sie !=

.filter(lambda x: x is not None).filter(lambda x: x != "") 

verwenden, aber idiomatisch können Sie nur eine einzige filter mit Identität verwenden:

.filter(lambda x: x) 

oder direkt mit bool:

.filter(bool) 
Verwandte Themen