火花 - 行元素的长度

时间:2015-04-03 14:52:46

标签: python apache-spark

我正在尝试进行过滤操作以获取变量country的长度小于4的所有行,无论我做什么,我都会遇到错误。

这是当前代码(使用Python API)

uniqueRegions = sqlContext.sql("SELECT country, city FROM df")
uniqueRegions = uniqueRegions.rdd
uniqueRegions = uniqueRegions.distinct()
uniqueRegions = uniqueRegions.filter(lambda line: len(line.country) < 4)

这是错误 TypeError: object of type 'NoneType' has no len()

第一行(使用rdd.first完成): Row(country=u'xxxxxx', city=u'xxxxxx')

有关如何解决此问题的任何建议? 感谢。

1 个答案:

答案 0 :(得分:1)

您有一个国家/地区为NULL的数据库记录。这个长度没有意义。如果没有国家设定,该怎么办?

也许你想过滤记录? SELECT country, city FROM df WHERE country IS NOT NULL?或者可能是lambda l: l.country is not None and len(l.country) < 4,或者取决于您的逻辑lambda l: l.country is None or len(l.country) < 4