在读取json文件时进行Pyspark过滤

时间:2019-06-05 15:23:07

标签: apache-spark pyspark

我正在尝试从一个json文件创建一个数据帧,其中包含一个月的网络通信并收到OOM错误。读指令包含的过滤器将大大减少记录数量。

    process_df = (spark.read.json(input_file)
                  .filter((F.col("initiated") == "true")
                           & ((F.col("dest_port") == "80")
                           | (F.col("dest_port") == "443"))))

    process_df.count()

我认为尽管实现了惰性评估,但实现方式还是是将数据读入执行程序,然后在调用count时将过滤器用作转换?这是正确的吗?

我确实尝试通过添加

来解决内存问题。
.persist(StorageLevel.DISK_ONLY)

但这导致挂起的作业,其中包含大量的rpc错误。

我认为我的解决方案是读取较小的数据块,过滤然后合并。我真的是想了解我关于Spark运作方式的思维模型是否正确。

0 个答案:

没有答案