如何在sparkR中使用getItem(x,…)以及如何在列中获取特定值的子集



我有一个sparkR数据帧,cust_sales,我只需要从列cust_id中提取值CQ98901282,在R中我们使用cust_sales$cust_id[3]

我的建议是我们可以使用getItem(x, ...)提取,如果是这样的话参数"x"将是列cust_sales$cust_id

  1. 什么会出现在"…"
  2. 如果我的建议是错误的,getItem(x, ...)的用法是什么,它如何在我的例子中使用。

    +----------+----------+-----------+
    |   cust_id|      date|Total_trans|
    +----------+----------+-----------+
    |CQ98901280|2015-06-06|          1|
    |CQ98901281|2015-05-01|          1|
    |CQ98901282|2015-05-02|          1|
    |CQ98901283|2015-05-03|          1|
    |CQ98901284|2015-04-01|          6|
    |CQ98901285|2015-04-02|          8|
    |CQ98901286|2015-04-03|         13|
    |CQ98901287|2015-04-04|          3|
    |CQ98901288|2015-04-05|          3|
    |CQ98901289|2015-04-08|         16|
    

TIA,阿伦

Spark数据帧不支持随机行访问,您对getItem函数的工作方式有错误的了解。它用于从非原子字段(如映射或数组)中提取数据:

> writeLines('{"foo": [0, 1], "bar": {"x": 3, "y": 4}}', "example.json")
> df <- SparkR::jsonFile(sqlContext, "example.json")
> printSchema(df)
root
 |-- bar: struct (nullable = true)
 |    |-- x: long (nullable = true)
 |    |-- y: long (nullable = true)
 |-- foo: array (nullable = true)
 |    |-- element: long (containsNull = true)
> select(df, getItem(df$bar, "x"), getItem(df$bar, "y")) %>% head()
  bar[x] bar[y]
1      3      4

由于某些原因,我不能使它与数组工作,但使用PySpark

>>> df = sqlContext.read.json("example.json")
>>> df.select(df.foo.getItem(0)).show()
>>> df.select(df.foo.getItem(0), df.foo.getItem(1), df.bar.getItem("x")).show()
+------+------+------+
|foo[0]|foo[1]|bar[x]|
+------+------+------+
|     0|     1|     3|
+------+------+------+

相关内容

  • 没有找到相关文章

最新更新