2016-08-05 3 views
0

Я хочу, чтобы рассчитывать отдельные элементы столбца SparkR (из более dataframe SparkR):Почему countDistinct/n_distinct в столбце SparkR не работает?

df$col1 
1 
2 
2 
5 
6 
5 

различные элементы: 1,2-5,6

Когда я пытаюсь countDistinct на моем SparkR колонке, я только получите этот результат:

> countDistinct(df$col1) 
Column count(col1) 

Должен ли я использовать функцию agg? Я попытался, но не смог, потому что он не работает в столбцах.

ответ

2

И это ожидаемый результат. Столбец SparkR не является контейнером данных. Это всего лишь представление логической операции в плане выполнения. Если вы хотите получить результат, вы его оценили в определенном контексте:

# 2.0.0+ syntax 
df <- createDataFrame(data.frame(col1=c(1, 2, 2, 5, 6, 5))) 

collect(select(df, countDistinct(df$col1))) 
## count(DISTINCT col1)           
## 1     4 
+0

Спасибо! Я думал, что countDistinct уже приведет к действию, но это всего лишь трансформация. –

+0

На самом деле 'countDistinct' даже не является преобразованием. Даже если вы вызываете его на 'df $ col1', он не привязан к каким-либо конкретным данным. – zero323

+0

Да, вы правы. Я хотел сказать, что это только описание того, что произойдет с данными во время действия. –

0
> df <- c(1,2,3,4,5,6,7,4,5,6) 
    > df_uniq <- unique(df) 
    > length(df_uniq) 
    [1] 7 

найти уникальные значения в столбцах в вашем ОМ

unique(df$col1) 
length(unique(df$col1)) 

Надеется, что вы получите ответ.

+0

Спасибо, но у меня есть столбец в распределенном наборе данных, а не вектор. –

+0

Вы хотите применить его на столбцах ?? –

+0

Нет, я хочу применить его только к одному столбцу в распределенном фрейме: https://spark.apache.org/docs/latest/sparkr.html –

 Смежные вопросы

  • Нет связанных вопросов^_^