【发布时间】:2020-05-06 23:56:46
【问题描述】:
我正在将数据从数据帧发送到限制为 50,000 行的 API。假设我的数据框有 70,000 行,我如何将其拆分为单独的数据框,每个数据框的最大行数为 50,000?这些不必是偶数,数据顺序无关紧要。
【问题讨论】:
-
你可以使用
df.count的条件,如果大于50k 使用randomSplit函数。 spark.apache.org/docs/latest/api/python/… -
类似
def split(df): if df.count()>50000: df1,df2=df.randomSplit([0.5,0.5],24) return df1,df2 else: return df -
乔希,你可能会找到答案here
-
@Josh 更好的解决方案是在数据帧上利用
foreachPartition方法,通过这种方式,您可以控制每个分区的确切行数,并将数据直接发送到您的 API,如您之前在此处询问的那样stackoverflow.com/questions/61645936/…. -
另一种解决方法是使用
.limit()函数。您可以执行以下操作:假设您的 70k 行主 df 是 original_df。因此,您可以第一次像limited_df = df.limit(50000)一样获得 50k 行,对于接下来的行,您可以像original_df.subtract(limited_df)一样获得剩余的行。如果需要,您甚至可以为减去的 df 执行 .limit()。
标签: apache-spark pyspark