提取 Spark 数据框中的第二行值

Yak*_*kov 0 dataframe apache-spark

我有按第二列排序的表 (1000000x4) 的 Spark 数据框 我需要获取第二行第 0 列和第二行第 3 列的 2 个值 我该怎么做?

Alb*_*nto 5

如果您只需要这些值,这非常简单,只需使用 的DataFrame内部RDD。您没有指定语言,所以我将利用这个自由向您展示如何使用python2.

df = sqlContext.createDataFrame([("Bonsanto", 20, 2000.00), 
                                 ("Hayek", 60, 3000.00), 
                                 ("Mises", 60, 1000.0)], 
                                ["name", "age", "balance"])
requiredRows = [0, 2]
data = (df.rdd.zipWithIndex()
        .filter(lambda ((name, age, balance), index): index in requiredRows)
        .collect())
Run Code Online (Sandbox Code Playgroud)

现在您可以操作数据列表内的变量。顺便说一句,我没有删除 every 内部的索引,tuple只是为了向您提供有关其工作原理的另一个想法。

print data

#[(Row(name=u'Bonsanto', age=20, balance=2000.0), 0),
# (Row(name=u'Mises', age=60, balance=1000.0), 2)]
Run Code Online (Sandbox Code Playgroud)

  • 对于小的 `n` `orderBy(...).limit(n)` 会更好,不是吗?:) (2认同)