Конвертировать HiveQL в Spark Scala

На самом деле режим «Смешанный» (Schema.Types.Mixed) выглядит так, что в Mongoose ...

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

Mixed

«Что угодно» SchemaType, его гибкость возникает при компромисс с ним сложнее поддерживать. Смешанный доступен либо через Schema.Types.Mixed, либо путем передачи пустого литерала объекта. Следующие эквиваленты:

var Any = new Schema({ any: {} });
var Any = new Schema({ any: Schema.Types.Mixed });

Поскольку это тип без схемы, вы можете изменить значение на все, что вам нравится, но Mongoose теряет способность автоматически обнаруживать и сохранять эти изменения. Чтобы «сказать» Mongoose, что значение смешанного типа изменилось, вызовите метод .markModified(path) документа, передающий путь к только что измененному типу Mixed.

person.anything = { x: [3, 4, { y: "changed" }] };
person.markModified('anything');
person.save(); // anything will now get saved
blockquote>

1
задан Community 17 January 2019 в 19:14
поделиться

1 ответ

Ваша ошибка заключается в использовании агрегата в предложении orderBy:

.orderBy(count("*").desc)

Если написано так, выражение вводит новое выражение агрегирования. Вместо этого вы должны ссылаться на существующий агрегат по имени:

.orderBy("freq")

Таким образом, ваш код должен выглядеть следующим образом:

val w = row_number().over(
  Window.partitionBy("category").orderBy("freq"))
val result = df.select("category", "product")
  .groupBy("category", "product")
  .agg(count("*").as("freq"))
val new_res = result
  .withColumn("seqNum", w).where(col("seqNum") <= 10)
  .drop("seqNum")
0
ответ дан user10465355 17 January 2019 в 19:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: