Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不要在Spark(Python)中写无行或空行_Python_Hadoop_Apache Spark_Pyspark - Fatal编程技术网

不要在Spark(Python)中写无行或空行

不要在Spark(Python)中写无行或空行,python,hadoop,apache-spark,pyspark,Python,Hadoop,Apache Spark,Pyspark,我是Spark的新手,但我在Hadoop方面有一些经验。我正在尝试改编我在Hadoop流媒体中使用的python代码,它过滤掉一些JSON格式的推文 通常,我的函数有一个条件,如果条件为true,则打印到stdout tweet,否则不打印任何内容 def filter(tweet): if criteria(tweet) is True: print json.dumps(tweet) 这样,最终的输出文件将只包含我想要的tweet 但是,在尝试使用Spark时,我必须使用

我是Spark的新手,但我在Hadoop方面有一些经验。我正在尝试改编我在Hadoop流媒体中使用的python代码,它过滤掉一些JSON格式的推文

通常,我的函数有一个条件,如果条件为true,则打印到stdout tweet,否则不打印任何内容

def filter(tweet):
   if criteria(tweet) is True:
      print json.dumps(tweet)
这样,最终的输出文件将只包含我想要的tweet

但是,在尝试使用Spark时,我必须使用
return
更改
print
语句,因此如果条件为真,我将返回tweet,否则返回
None

def filter(tweet):
       if criteria(tweet) is True:
          return json.dumps(tweet)
尝试将结果保存到磁盘时出现问题。使用Pyspark的
saveAsTextFile
方法,它不仅保存了我想要的tweet,还保存了条件为False时返回的
None

如何避免将
None
写入文件,以便只保存所需的tweet

非常感谢


Jorge

如果在地图中使用函数,它不会减少元素的数量。要过滤元素,必须使用
filter
方法在
map
之后测试元素是否
None
,这是一个非常优雅的解决方案,它避免了链接
filter
map
,使用
flatMap

def filter(tweet):
    return [json.dumps(tweet)] if criteria(tweet) is True else []

some_rdd.flatMap(filter)

你为什么不能直接返回“”?如果这不起作用,你就不能对返回的json转储文件做一些简单的后处理。这是一个很好的观点,但是它不是要打印一个空行吗?。。。。。我会尽力以防万一。谢谢你的回复。