如何从 spark dataframe 中提取某些行以创建另一个 spark dataframe?

How to extract certain rows from spark dataframe to create another spark dataframe?

在 pandas 数据帧 df 中,可以提取行的子集并将其存储在另一个 pandas 数据帧中。例如,df1 = df[10:20]。我们可以在 spark dataframe 中做类似的事情吗?

您可以尝试使用row_number,它会添加递增的行号列。数据将按 .orderBy 子句中使用的列排序。然后你可以 select 需要的行。

 import org.apache.spark.sql.expressions.Window 
 val new_df = df.withColumn("id",row_number.over(Window.orderBy('someColumnFromDf))).where('id <= 20 and 'id >= 10)

@chlebek 因为你的回答对我有用。我更正了一个打字错误,post 在这里作为答案。

    b = cdf.withColumn("id", row_number().over(Window.orderBy("INTERVAL_END_DATETIME")))
    b = b.where(b.id >= 10)
    b = b.where(b.id <= 20)

由于我们在 Spark,我们正在考虑 Pandas(和 Python)仍在迎头赶上的大型数据集。我想强调的是,您可能认为 PySpark 更适合您的数据处理问题的原因正是数据量——大到 pandas 无法很好地处理。

话虽如此,您根本无法将庞大的数据集视为可以“排名”的东西,因为没有计算机可以处理它(因为缺少 RAM 或时间)。

为了回答您的问题:

one can extract a subset of rows and store it in another pandas data frame.

想想您用来过滤掉不想包含在结果数据集中的行的 filterwhere

可能如下所示(使用 Scala API):

val cdf: DataFrame = ...
val result: DataFrame = cdf.where("here comes your filter expression")

随心所欲地使用 result 数据框。这就是您想要使用的并且现在可用。那是一种“火花方式”。