in-java连接器中的分区不工作

l7mqbcuq  于 2021-05-24  发布在  Spark
关注(0)|答案(0)|浏览(257)

我尝试使用mongodbspark连接器读取数据,并希望在一个键上对数据集进行分区,从mongod独立示例读取数据。我在看mongodbspark的文档,它提到了各种分区器类。我试着用 MongoSamplePartitioner 类,但它只在一个分区上读取。 MongoPaginateByCountPartitioner 类以及分区到固定的66个分区。甚至当我分别在这两种情况下配置“samplesperpartition”和“numberofpartitions”时也是这样。我需要使用通过Map创建的readconfig。我的代码:

SparkSession sparkSession = SparkSession.builder().appName("sampleRecords")
    .config("spark.driver.host", "2g")
    .config("spark.driver.host", "127.0.0.1")
    .master("local[4]").getOrCreate();
Map<String, String> readOverrides = new HashMap<>();
readOverrides.put("uri", "mongodb://mongo-root:password@127.0.0.1:27017/importedDb.myNewCollection?authSource=admin");
readOverrides.put("numberOfPartitions", "16");
readOverrides.put("partitioner", "MongoPaginateByCountPartitioner");
ReadConfig readConfig = ReadConfig.create(readOverrides);
JavaSparkContext jsc = JavaSparkContext.fromSparkContext(sparkSession.sparkContext());
Dataset<Row> dataset = MongoSpark.load(jsc, readConfig).toDF();

System.out.println(dataset.count()); //24576        
System.out.println(dataset.rdd().getNumPartitions()); //66

每次我在这里遗漏什么时,使用sample partitioner都会返回1个分区?请帮忙。
ps-我正在阅读24576条记录,mongod版本4.0.10,MongoSpark connector 2.3.1,Java8
编辑:我让它工作了,需要在Map中提供像partitioneroptions.samplesperpartition这样的属性。但我仍然面临一个问题,partitioneroptions.samplesperpartition:“1000”,在mongosamplepartitioner中只返回1个分区。有什么建议吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题