Spark处理远程mongodb数据报错

报错:

Failed with exception java.io.IOException:java.io.IOException: Unable to calculate input splits: not authorized on loan to execute command { splitVector: "loan.operatorMongoModel", keyPattern: { _id: 1 }, min: {}, max: {}, force: false, maxChunkSize: 8 }


可以看出是splitVector权限的问题,因为Spark在拆分非分片集合时需要splitVector命令的,该命令仅限于管理员用户。mongo.input.split.create_input_splits的默认设置是true,也就是会对数据进行拆分,根据集群数,cpu核数然后将数据进行拆分成多个InputSplits,以允许Hadoop并行处理,也就是说,Hadoop为每个映射器分配一个InputSplits。

解决方法:

db.createRole({role: "hadoopSplitVector",privileges: [{resource: {db: "loan",collection: "operatorMongoModel"},actions: ["splitVector"]}],roles:[]})

db.updateUser("mintq",{roles: [{role:"read",db:"loan"},{role:"hadoopSplitVector", db:"loan"}]})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值