python - 具有一些空值的数组上的 Spark Stats

标签 python hadoop apache-spark

我有以下代码:

            myData3 = myData.map(lambda line: line.split(',')).map(lambda fields: ("Column", float(fields[0]))).map(lambda (column, value) : (value)).persist(StorageLevel.MEMORY_AND_DISK)

我将 if 语句放在那里是因为现在我有一些包含整列的数据集。 float(fields[0]) 映射在遇到任何 null 时会导致错误。如何编写 spark 代码以允许我获取示例数组:[1,2,3,4,,5,,19] 并处理它?

最佳答案

只需在您的 map 之前运行一个过滤器:

.map(...split...)
.filter(lambda fields: fields[0] != null)
.map(...process...)

您可以使用 accumulator如果您确实需要,还可以跟踪过滤掉的数据。

使用累加器它看起来更像(python 不是我常用的语言,所以它可能会有点偏离:

accum = sc.accumulator(0)

def filterWithAccum(fields):
  accum.add(1)
  return fields[0] != null

.map(...split...)
.filter(filterWithAccum)
.map(...process...)

关于python - 具有一些空值的数组上的 Spark Stats,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28838694/

相关文章:

apache-spark - spark.cores.max 是如何工作的?

apache-spark - Spark 什么时候会自动清理缓存的 RDD?

python - 如何从网站搜索特定文本,检索并与谷歌应用引擎(python)一起使用?

python - 如何使用 python 和 opencv 从彼此中减去两个图像?

python - unicode解码的问题

hadoop - 是否可以在Ambari上安装Apache Bigtop Stack

apache-spark - 我只想将数据用于 spark 那么哪种文件格式最适合 hive?

python - 在考虑带有撇号的单词时,如何在 python 中使用正则表达式分隔单词?

hadoop - 改变配置单元多列

hadoop - 在hadoop中这种情况下如何减少?