Как использовать getItem(x,) в sparkR и как подмножить определенное значение в столбце?

У меня есть кадр данных sparkR, cust_sales, мне нужно извлечь только значение CQ98901282 из столбца cust_id, в 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|
    

ТИА, Арун


person Arun Gunalan    schedule 10.09.2015    source источник


Ответы (1)


Фреймы данных 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|
+------+------+------+
person zero323    schedule 10.09.2015