У меня есть 2 набора данных, которые я пытаюсь объединить:
Dataset1 (machine):
String machineID:
List<Integer> machineCat;(100,200,300)
Dataset2 (car):
String carID:
List<Integer> carCat;(30,200,100,300)
Мне нужно чтобы получить каждый элемент List machineCat из набора данных1 и проверить, содержится ли он в List carCat набора данных2. Если это совпадает, объедините 2 набора данных, как показано ниже:
окончательный набор данных:
machineID,machineCat(100),carID,carCat(100)
machineID,machineCat(200),carID,carCat(200)
machineID,machineCat(300),carID,carCat(400)
любая помощь о том, как это сделать, используя соединение набора данных в java.
Рассматриваем вариант с array_contain (что-то вроде ниже)
machine.foreachPartition((ForeachPartitionFunction<Machine>) iterator -> {
while (iterator.hasNext()) {
Machine machine = iterator.next();
machine.getmachineCat().stream().filter(cat -> {
LOG.info("matched");
spark.sql(
"select * from machineDataset m"
+ " join"
+ " carDataset c "
+ "where array_contains(m.machineCat,cat)");
return true;
});
}
});