Это команда, которая решает мою проблему:
docker run --network docker-spark-cluster_spark-network -v /tmp/spark-apps:/opt/spark-apps --env SPARK_APPLICATION_JAR_LOCATION=$SPARK_APPLICATION_JAR_LOCATION --env SPARK_APPLICATION_MAIN_CLASS=$SPARK_APPLICATION_MAIN_CLASS --env SPARK_APPLICATION_ARGS="/opt/spark-data/README.md /opt/spark-data/output-6" spark-submit:2.4.0
Я должен использовать --env SPARK_APPLICATION_ARGS = "args1 args2 argsN" вместо -e APP_ARGS = "args1 args2 argsN".
var foo = new List<Category>() {
new Category() { Name = "AA", Count = 2},
new Category() { Name = "BB", Count = 3},
new Category() { Name = "AA", Count = 4}
};
var bar = foo.GroupBy(c => c.Name).Select(g => new Category(){ Name = g.Key, Count = g.Sum(c => c.Count) });
Ваш обновленный вопрос не совершенно ясен с точки зрения номера телефона, но я подозреваю, что Вы хотите что-то как:
var query = from category in list
group category by category.Name into grouped
select new { Name = grouped.Key,
SumA = grouped.Sum(x => x.CountA),
SumB = grouped.Sum(x => x.CountB),
Phone = grouped.Last().Phone };
Изменение grouped.Last()
кому: grouped.First()
было бы более эффективным, между прочим.
Оценка нескольких агрегатов таким образом не ужасно эффективна в целом. Нажатие проект LINQ, разработанный один и Marc Gravell, делает это намного более эффективным за счет того, чтобы не быть вполне как простое в использовании. Вы могли бы хотеть изучить его, если необходимо иметь дело с большим количеством данных.