Нужна помощь по вложенной группировке. Очень новое для искры и скалы. Цените, что вы посоветуете.Агрегация искры - вложенные группы
Я работаю над преобразованием коллекции монго с использованием искры. Я работаю с IntelliJ-Idea. Вот детали коллекции:
{
_id:
customer:
product:
location:
date:
transType:
}
использования: Для каждого продукта «» и для каждого места, которые клиенты с типом транзакции «заказал».
// выводим что-то вроде этого
{
Product: ABCD
location: North america
customer: Cust 1, type: ordered
total: 200
}
{
Product: EFGH
location: North america
customer: Cust 2, type: Ordered
total: 300
}
Вот то, что я до сих пор:
val conf = new SparkConf().setAppName("PVL").setMaster("local").
set("spark.mongodb.input.uri","mongodb://127.0.0.1:27017/product.transactionEvent").
set("spark.mongodb.output.uri", "mongodb://127.0.0.1:27017/product.transctionResult")
val sc = new SparkContext(conf)
val rdd = sc.loadFromMongoDB()
val aggRdd = rdd.withPipeline(Seq(
Document.parse("{$match: {transType: 'ordered'}}"),
Document.parse("""{ $group: {_id: {prodId: "$prodId", customer: "$customer", location: "$location", Transtype: "$Transtype"}, total: {$sum:1}}}"""),
Document.parse("""{$group: {_Id: {prodId: "$_id.prodId"}, details: {$addToSet: {customer: "$_id.customer", location: "$_id.location", transType: "$_id.transType", total: "$total"}}}}""")))
Но это не работает по какой-то причине. Ошибка:
«неизвестный оператор группы„PRODID“» на сервере
Во-первых, это можно сделать этот вид гнездится на искру? Если да, то что я делаю неправильно? Любая помощь с благодарностью
В сообщении об ошибке указано, что поле вашей группы 'prodId' не существует в вашей коллекции' transactionEvent'. Я бы посоветовал узнать о [агрегации MongoDB] (https://docs.mongodb.com/manual/aggregation/). Сначала проверьте свою агрегацию через [mongo shell] (https://docs.mongodb.com/manual/mongo/), чтобы убедиться, что она работает. –
Спасибо, Ван. У меня ** есть поле с именем prodId. Я просто не перечислял его здесь в вопросе, но у меня есть это в коллекции. Я тестировал его также в оболочке mongo, и он бросает ту же ошибку. Я думаю, что это имеет какое-то отношение к моему гнезду в группе. – Vamsi
Вы должны обновить свой вопрос с помощью правильного примера документа, а также пример агрегации, который вы тестируете на оболочке mongo. В противном случае людям было бы трудно помочь вам без надлежащего контекста. –