Nano Hash - криптовалюты, майнинг, программирование

Scala инициализирует sc.parallelise внутри, если блокирует и выполняет внешний цикл

У меня есть следующий код: -

case class event(id: String, date: String)

object test {
  def main(args: Array[String]) {
  var collection = null
  if(some_condition){
     val a = some_value
     val b = value2
     val value3 = some_function_calculation_from other_class
     val c = value3
     val d = value4
    collection = sc.parallelize(Seq(event(a,b),event(c,d)))
  } else {
    collection = sc.parallelize(Seq(event(e,f),event(g,h)))
  }
  collection.saveToCassandra("db", "table", SomeColumns("id", "date"))
  }
}

Я хочу, чтобы мой объект коллекции был сохранен в cassandra со значениями seq события (a, b) и события (c, d), и когда, если условие не выполняется, это должно быть событие (e, f) и событие (g, h) но это идет как ноль. Где я ошибаюсь?

Примечание. Он отлично работает, когда нет блока if, что означает инициализацию всех определений коллекции в одной области.

Спасибо,


  • Вы хотите, чтобы объект коллекции был как RDD[event] динамически? 04.04.2018
  • может быть RDD[Array[event]] 04.04.2018
  • Что не так с val xs = if(some_condition) Seq(event(a,b) ) else Seq(event(e,f)) и последующим распараллеливанием? 04.04.2018
  • Привет @philantrovert, не могли бы вы перепроверить мой вопрос, который я отредактировал. У меня есть еще несколько утверждений внутри блока if, поэтому я думаю, что ваш ответ не подойдет для этой ситуации. 04.04.2018
  • Это будет, последний оператор в блоке if будет возвращен и сохранен в переменной. В любом случае все ваши присваивания имеют возвращаемый тип Unit. Вы также можете явно объявить val xs: Seq[event] = if (...), чтобы убедиться, что нет незавершенных концов. 04.04.2018
  • @philantrovert, спасибо. Да, это сработало. Большое спасибо за вашу помощь. :) 04.04.2018
  • Прохладный. Просто любопытно, работает ли ваш старый код, опубликованный в вопросе, если вы замените объявление collection на var collection: RDD[event] = ??? ? 04.04.2018
  • @philantrovert - я думаю, это вызывало некоторые проблемы. Итак, я изменил его на val вместо var, как вы предложили. 05.04.2018

Ответы:


1

Если вы хотите, чтобы collection было RDD[event] в соответствии с условием, вы можете назначить if else переменной collection.

val collection = if (some_condition)
    sc.parallelize(Seq(event("a", "b"), event("c", "d")))
  else
    sc.parallelize(Seq(event("e", "f"), event("g", "h")))

Надеюсь это поможет!

04.04.2018
  • Привет @Shankar, извините, я забыл упомянуть, что у меня есть еще несколько операторов внутри блока If (отредактировал мой вопрос) перед оператором распараллеливания, поэтому я не думаю, что в этом случае этот ответ сработает. Не могли бы вы перепроверить? 04.04.2018
  • @AdityaJain Если у вас есть какие-то операторы, которые тоже будут работать, вам всегда нужно возвращать RDD[event] из условия if и else 04.04.2018
  • Да, это сработало Большое спасибо @Shankar. Спасибо за ваше драгоценное время. Принимаю ваш ответ .. ура :) 04.04.2018
  • @AdityaJain Я рад, что помог вам. спасибо за принятие в качестве ответа :) 04.04.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..