WedX - журнал о программировании и компьютерных науках

Более быстрый способ использования фильтра в sparkR

У меня есть «данные» DataFrame, которые содержат user_id. Чтобы получить все user_id=1, я просто делаю это

filter(data, data$user_id==1)

Скажем, я хочу создать новый DataFrame 'new_data', содержащий первые 10 user_id, а именно user_id= 1, 2, 3,..., 10.

Один из способов сделать это в SparkR —

newdata <- unionAll(filter(data, data$user_id==1), filter(data, data$user_id==2))
for(j in 3:10){
newdata<- unionAll(newdata, filter(data, data$user_id==j) )
}

Это прекрасно работает, однако для больших значений j может потребоваться время. Должен ли быть более умный и простой способ сделать это?

20.08.2015

Ответы:


1

Есть несколько возможных решений. Во-первых, %in% не поддерживается в SparkR, но наивный способ исправить этот подход — это ответ на вопрос Как создать новый DataFrame в sparkR.

Для других подходов я привожу минимальный пример DataFrame: df ‹- data.frame(ID = c(1,2,3,4), age = c(21,23,33,21))

data <- createDataFrame(sqlContext, df)

Второй подход работает только тогда, когда вы хотите получить первый идентификатор (или, по крайней мере, последующие идентификаторы). Затем вы можете сделать следующее

newdata ‹- filter(data, data$ID ‹ 3) collect(newdata)

В более общем случае вы можете объединить свои данные с идентификатором, который хотите сохранить. Это проще, если вы хотите сохранить непоследовательные идентификаторы, но когда у вас есть последовательные идентификаторы, это будет медленнее, чем предыдущий подход:

toJoin <- data.frame(IDs = c(1,3))
toJoin <- createDataFrame(sqlContext, toJoin)

newdata <- join(data,toJoin, data$ID == toJoin$IDs)
newdata$IDs <- NULL
collect(newdata)
21.08.2015
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]