В Hadoop MapReduce входные данные находятся на диске, вы выполняете карту и уменьшаете и возвращаете результат на диск. Apache Spark позволяет более сложные трубопроводы. Возможно, вам нужно сопоставить дважды, но не нужно уменьшать. Возможно, вам нужно уменьшить карту, а затем снова уменьшить. API-интерфейс Spark очень удобен для создания очень сложных конвейеров с десятками шагов.
Вы также можете реализовать тот же сложный конвейер с MapReduce. Но затем между каждым этапом вы пишете на диск и читаете его обратно. Spark избегает этих накладных расходов, когда это возможно. Хранение данных в памяти - это один из способов. Но очень часто даже это не нужно. Один этап может просто передать вычисленные данные на следующий этап, не сохраняя при этом всех данных.
Это не вариант с MapReduce, потому что один MapReduce не знает о следующем. Он должен завершиться полностью до того, как начнется следующее. Вот почему Spark может быть более эффективным для сложных вычислений.
API, особенно в Scala, тоже очень чист. Классический MapReduce часто является одной строкой. Это очень удобно использовать.
Попробуйте:
result.ViewData.Model
Надеюсь, это поможет.
В версии Предвыпускной версии Asp. Сетевая платформа Mvc, модель сделана доступной через свойство "Model" объекта ViewResult. Вот более точная версия Вашего теста:
[Fact]
public void List_Action_Provides_ProjectCollection()
{
//act
var result = controller.List();
//assert
var viewresult = Assert.IsType<ViewResult>(result);
Assert.NotNull(result.ViewData.Model);
Assert.IsType<List<string>>(result.ViewData.Model);
}