需要有关嵌套分组的帮助。非常新的火花和斯卡拉。感谢您的专家建议。
我正在使用spark进行mongo集合的转换。我正在使用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''在服务器上
首先,是否可以在火花中进行这种嵌套?如果是的话,我做错了什么? 非常感谢任何帮助
答案 0 :(得分:0)
我知道问题是什么。在$ group语句之一中,我有_id大写(如_Id)。一旦我删除它,它工作正常。
简而言之:像unknown group operator
或<field> should be inside the object
这样的错误意味着,代码无法识别群组运营商/字段。原因可能是:
因此,请检查您的代码是否存在这些错误。
由于