如何在限制行数的同时拆分 Pyspark 数据框?

Jos*_*osh 5 apache-spark pyspark

我正在将数据从数据帧发送到限制为 50,000 行的 API。假设我的数据帧有 70,000 行,如何将其拆分为单独的数据帧,每个数据帧的最大行数为 50,000?这些不必是偶数,并且数据顺序并不重要。

Fro*_*sty 3

解决此问题的方法是使用.limit()函数。你可以这样做:假设你的主 df 有 70k 行是original_df。所以你可以这样做

limited_df = df.limit(50000)
Run Code Online (Sandbox Code Playgroud)

第一次获取 50k 行,对于接下来的行,您可以执行以下操作

original_df.subtract(limited_df)
Run Code Online (Sandbox Code Playgroud)

你将得到剩余的行。如果需要,您甚至可以对减去的 df 执行 .limit() 。

更新: 您可以对数据框中存在的任意数量的行执行此操作。假设在某一时刻,如果你的数据帧有 30000 行,并且如果你执行了 df.limit(50000),它不会抛出任何错误,只会返回数据帧中存在的 30k 行。