web-dev-qa-db-ja.com

PysparkRDDから空の行を削除する方法

削除したいRDDに空の行がほとんどありません。どうすればいいですか?

以下を試しましたが、動作しません。私はまだ空の行を取得しています

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 ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u '' 、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u '' 、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u '' 、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u '' 、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u '' 、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u '' 、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u '' 、u ''、u ''、u ''、u ''、u ''、u ''、u ''、u '[{"PLAN_ID": "d2031aed-175f-4346-af31-9d05bfd4ea3a"、 " CostTotalInvEOPAmount ":0.0、" St oreCount ":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 '']

7
shibu

filter(lambda x: x is not '')filter(lambda x: x is not u'')に置き換えて、うまくいきました

4
shibu

isは、オブジェクトのIDが等しいかどうかをチェックします。 Python 2.xでは、!=を使用できます

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

しかし、慣用的には、IDを持つ単一のfilterのみを使用できます。

.filter(lambda x: x)

または直接 bool

.filter(bool)
13
zero323