Метод UDF SIM (string [] a, string [] b), где A и B происходят из двух разных наборов данных, получает одинаковое значенJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Метод UDF SIM (string [] a, string [] b), где A и B происходят из двух разных наборов данных, получает одинаковое значен

Сообщение Anonymous »

I h a v e t o c a l c u l a t e a s i m i l a r i t y v a l u e b e t w e e n t h e c o m p e t e n c i e s o f a r e f e r e n c e l o c a l a u t h o r i t y i n F r a n c e : < / p > < b r / > < d i v c l a s s = " s - t a b l e - c o n t a i n e r " > < t a b l e c l a s s = " s - t a b l e " > < b r / > < t h e a d > < b r / > < t r > < b r / > < t h > C 1 0 1 0 < / t h > < b r / > < t h > C 1 0 1 5 < / t h > < b r / > < t h > C 1 0 2 0 < / t h > < b r / > < t h > C 1 0 2 5 < / t h > < b r / > < t h > C 1 0 3 0 < / t h > < b r / > < t h > C 1 5 0 2 < / t h > < b r / > < t h > C 1 5 0 5 < / t h > < b r / > < t h > C 1 5 0 7 < / t h > < b r / > < t h > C 1 5 1 0 < / t h > < b r / > < t h > C 1 5 1 5 < / t h > < b r / > < t h > C 1 5 2 0 < / t h > < b r / > < t h > C 1 5 2 5 < / t h > < b r / > < t h > C 1 5 2 8 < / t h > < b r / > < t h > C 1 5 2 9 < / t h > < b r / > < t h > C 1 5 3 0 < / t h > < b r / > < t h > C 1 5 3 1 < / t h > < b r / > < t h > C 1 5 3 2 < / t h > < b r / > < t h > C 1 5 3 3 < / t h > < b r / > < t h > C 1 5 3 4 < / t h > < b r / > < t h > C 1 5 3 5 < / t h > < b r / > < t h > C 1 5 4 0 < / t h > < b r / > < t h > C 1 5 4 5 < / t h > < b r / > < t h > C 1 5 5 0 < / t h > < b r / > < t h > C 1 5 5 5 < / t h > < b r / > < t h > C 1 5 6 0 < / t h > < b r / > < t h > C 2 0 0 5 < / t h > < b r / > < t h > C 2 0 1 0 < / t h > < b r / > < t h > C 2 0 1 5 < / t h > < b r / > < t h > C 2 5 1 0 < / t h > < b r / > < t h > C 2 5 1 5 < / t h > < b r / > < t h > C 2 5 2 0 < / t h > < b r / > < t h > C 2 5 2 1 < / t h > < b r / > < t h > C 2 5 2 5 < / t h > < b r / > < t h > C 2 5 2 6 < / t h > < b r / > < t h > C 3 0 0 5 < / t h > < b r / > < t h > C 3 0 1 0 < / t h > < b r / > < t h > C 3 0 1 5 < / t h > < b r / > < t h > C 3 0 2 0 < / t h > < b r / > < t h > C 3 0 2 5 < / t h > < b r / > < t h > C 3 2 1 0 < / t h > < b r / > < t h > C 3 2 2 0 < / t h > < b r / > < t h > C 3 5 0 5 < / t h > < b r / > < t h > C 3 5 1 0 < / t h > < b r / > < t h > C 3 5 1 5 < / t h > < b r / > < t h > C 4 0 0 5 < / t h > < b r / > < t h > C 4 0 0 6 < / t h > < b r / > < t h > C 4 0 0 7 < / t h > < b r / > < t h > C 4 0 0 8 < / t h > < b r / > < t h > C 4 0 1 0 < / t h > < b r / > < t h > C 4 0 1 5 < / t h > < b r / > < t h > C 4 0 1 6 < / t h > < b r / > < t h > C 4 0 1 7 < / t h > < b r / > < t h > C 4 0 2 0 < / t h > < b r / > < t h > C 4 0 2 5 < / t h > < b r / > < t h > C 4 5 0 5 < / t h > < b r / > < t h > C 4 5 1 0 < / t h > < b r / > < t h > C 4 5 1 5 < / t h > < b r / > < t h > C 4 5 2 0 < / t h > < b r / > < t h > C 4 5 2 5 < / t h > < b r / > < t h > C 4 5 3 0 < / t h > < b r / > < t h > C 4 5 3 1 < / t h > < b r / > < t h > C 4 5 3 2 < / t h > < b r / > < t h > C 4 5 3 5 < / t h > < b r / > < t h > C 4 5 4 0 < / t h > < b r / > < t h > C 4 5 4 5 < / t h > < b r / > < t h > C 4 5 5 0 < / t h > < b r / > < t h > C 4 5 5 5 < / t h > < b r / > < t h > C 4 5 6 0 < / t h > < b r / > < t h > C 5 0 0 5 < / t h > < b r / > < t h > C 5 0 1 0 < / t h > < b r / > < t h > C 5 0 1 5 < / t h > < b r / > < t h > C 5 2 1 0 < / t h > < b r / > < t h > C 5 2 2 0 < / t h > < b r / > < t h > C 5 5 0 5 < / t h > < b r / > < t h > C 5 5 1 0 < / t h > < b r / > < t h > C 5 5 1 5 < / t h > < b r / > < t h > C 5 5 2 0 < / t h > < b r / > < t h > C 5 5 2 5 < / t h > < b r / > < t h > C 5 5 3 0 < / t h > < b r / > < t h > C 5 5 3 5 < / t h > < b r / > < t h > C 5 5 4 0 < / t h > < b r / > < t h > C 5 5 4 5 < / t h > < b r / > < t h > C 5 5 5 0 < / t h > < b r / > < t h > C 5 5 5 5 < / t h > < b r / > < t h > C 7 0 0 5 < / t h > < b r / > < t h > C 7 0 1 0 < / t h > < b r / > < t h > C 7 0 1 2 < / t h > < b r / > < t h > C 7 0 1 5 < / t h > < b r / > < t h > C 7 0 2 0 < / t h > < b r / > < t h > C 7 0 2 5 < / t h > < b r / > < t h > C 7 0 3 0 < / t h > < b r / > < t h > C 9 9 0 5 < / t h > < b r / > < t h > C 9 9 1 0 < / t h > < b r / > < t h > C 9 9 1 5 < / t h > < b r / > < t h > C 9 9 2 0 < / t h > < b r / > < t h > C 9 9 2 2 < / t h > < b r / > < t h > C 9 9 2 3 < / t h > < b r / > < t h > C 9 9 2 4 < / t h > < b r / > < t h > C 9 9 2 5 < / t h > < b r / > < t h > C 9 9 3 0 < / t h > < b r / > < t h > C 9 9 3 5 < / t h > < b r / > < t h > C 9 9 4 0 < / t h > < b r / > < t h > C 9 9 5 0 < / t h > < b r / > < t h > C 9 9 9 9 < / t h > < b r / > < t h > n o m G r o u p e m e n t < / t h > < b r / > < t h > s i r e n G r o u p e m e n t < / t h > < b r / > < t h > n o m b r e D e C o m p e t e n c e s E x e r c e e s < / t h > < b r / > < / t r > < b r / > < / t h e a d > < b r / > < t b o d y > < b r / > < t r > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > C C d u T h o u a r s a i s < / t d > < b r / > < t d > 2 4 7 9 0 0 7 9 8 < / t d > < b r / > < t d > 3 7 < / t d > < b r / > < / t r > < b r / > < / t b o d y > < b r / > < / t a b l e > < / d i v > < b r / > a n d t h o s e o f a l l l o c a l a u t h o r i t i e s o f F r a n c e ( f i r s t f e w s h o w n h e r e ) : < / p > < b r / > < d i v c l a s s = " s - t a b l e - c o n t a i n e r " > < t a b l e c l a s s = " s - t a b l e " > < b r / > < t h e a d > < b r / > < t r > < b r / > < t h > C 1 0 1 0 < / t h > < b r / > < t h > C 1 0 1 5 < / t h > < b r / > < t h > C 1 0 2 0 < / t h > < b r / > < t h > C 1 0 2 5 < / t h > < b r / > < t h > C 1 0 3 0 < / t h > < b r / > < t h > C 1 5 0 2 < / t h > < b r / > < t h > C 1 5 0 5 < / t h > < b r / > < t h > C 1 5 0 7 < / t h > < b r / > < t h > C 1 5 1 0 < / t h > < b r / > < t h > C 1 5 1 5 < / t h > < b r / > < t h > C 1 5 2 0 < / t h > < b r / > < t h > C 1 5 2 5 < / t h > < b r / > < t h > C 1 5 2 8 < / t h > < b r / > < t h > C 1 5 2 9 < / t h > < b r / > < t h > C 1 5 3 0 < / t h > < b r / > < t h > C 1 5 3 1 < / t h > < b r / > < t h > C 1 5 3 2 < / t h > < b r / > < t h > C 1 5 3 3 < / t h > < b r / > < t h > C 1 5 3 4 < / t h > < b r / > < t h > C 1 5 3 5 < / t h > < b r / > < t h > C 1 5 4 0 < / t h > < b r / > < t h > C 1 5 4 5 < / t h > < b r / > < t h > C 1 5 5 0 < / t h > < b r / > < t h > C 1 5 5 5 < / t h > < b r / > < t h > C 1 5 6 0 < / t h > < b r / > < t h > C 2 0 0 5 < / t h > < b r / > < t h > C 2 0 1 0 < / t h > < b r / > < t h > C 2 0 1 5 < / t h > < b r / > < t h > C 2 5 1 0 < / t h > < b r / > < t h > C 2 5 1 5 < / t h > < b r / > < t h > C 2 5 2 0 < / t h > < b r / > < t h > C 2 5 2 1 < / t h > < b r / > < t h > C 2 5 2 5 < / t h > < b r / > < t h > C 2 5 2 6 < / t h > < b r / > < t h > C 3 0 0 5 < / t h > < b r / > < t h > C 3 0 1 0 < / t h > < b r / > < t h > C 3 0 1 5 < / t h > < b r / > < t h > C 3 0 2 0 < / t h > < b r / > < t h > C 3 0 2 5 < / t h > < b r / > < t h > C 3 2 1 0 < / t h > < b r / > < t h > C 3 2 2 0 < / t h > < b r / > < t h > C 3 5 0 5 < / t h > < b r / > < t h > C 3 5 1 0 < / t h > < b r / > < t h > C 3 5 1 5 < / t h > < b r / > < t h > C 4 0 0 5 < / t h > < b r / > < t h > C 4 0 0 6 < / t h > < b r / > < t h > C 4 0 0 7 < / t h > < b r / > < t h > C 4 0 0 8 < / t h > < b r / > < t h > C 4 0 1 0 < / t h > < b r / > < t h > C 4 0 1 5 < / t h > < b r / > < t h > C 4 0 1 6 < / t h > < b r / > < t h > C 4 0 1 7 < / t h > < b r / > < t h > C 4 0 2 0 < / t h > < b r / > < t h > C 4 0 2 5 < / t h > < b r / > < t h > C 4 5 0 5 < / t h > < b r / > < t h > C 4 5 1 0 < / t h > < b r / > < t h > C 4 5 1 5 < / t h > < b r / > < t h > C 4 5 2 0 < / t h > < b r / > < t h > C 4 5 2 5 < / t h > < b r / > < t h > C 4 5 3 0 < / t h > < b r / > < t h > C 4 5 3 1 < / t h > < b r / > < t h > C 4 5 3 2 < / t h > < b r / > < t h > C 4 5 3 5 < / t h > < b r / > < t h > C 4 5 4 0 < / t h > < b r / > < t h > C 4 5 4 5 < / t h > < b r / > < t h > C 4 5 5 0 < / t h > < b r / > < t h > C 4 5 5 5 < / t h > < b r / > < t h > C 4 5 6 0 < / t h > < b r / > < t h > C 5 0 0 5 < / t h > < b r / > < t h > C 5 0 1 0 < / t h > < b r / > < t h > C 5 0 1 5 < / t h > < b r / > < t h > C 5 2 1 0 < / t h > < b r / > < t h > C 5 2 2 0 < / t h > < b r / > < t h > C 5 5 0 5 < / t h > < b r / > < t h > C 5 5 1 0 < / t h > < b r / > < t h > C 5 5 1 5 < / t h > < b r / > < t h > C 5 5 2 0 < / t h > < b r / > < t h > C 5 5 2 5 < / t h > < b r / > < t h > C 5 5 3 0 < / t h > < b r / > < t h > C 5 5 3 5 < / t h > < b r / > < t h > C 5 5 4 0 < / t h > < b r / > < t h > C 5 5 4 5 < / t h > < b r / > < t h > C 5 5 5 0 < / t h > < b r / > < t h > C 5 5 5 5 < / t h > < b r / > < t h > C 7 0 0 5 < / t h > < b r / > < t h > C 7 0 1 0 < / t h > < b r / > < t h > C 7 0 1 2 < / t h > < b r / > < t h > C 7 0 1 5 < / t h > < b r / > < t h > C 7 0 2 0 < / t h > < b r / > < t h > C 7 0 2 5 < / t h > < b r / > < t h > C 7 0 3 0 < / t h > < b r / > < t h > C 9 9 0 5 < / t h > < b r / > < t h > C 9 9 1 0 < / t h > < b r / > < t h > C 9 9 1 5 < / t h > < b r / > < t h > C 9 9 2 0 < / t h > < b r / > < t h > C 9 9 2 2 < / t h > < b r / > < t h > C 9 9 2 3 < / t h > < b r / > < t h > C 9 9 2 4 < / t h > < b r / > < t h > C 9 9 2 5 < / t h > < b r / > < t h > C 9 9 3 0 < / t h > < b r / > < t h > C 9 9 3 5 < / t h > < b r / > < t h > C 9 9 4 0 < / t h > < b r / > < t h > C 9 9 5 0 < / t h > < b r / > < t h > C 9 9 9 9 < / t h > < b r / > < t h > n o m G r o u p e m e n t < / t h > < b r / > < t h > s i r e n G r o u p e m e n t < / t h > < b r / > < t h > n o m b r e D e C o m p e t e n c e s E x e r c e e s < / t h > < b r / > < / t r > < b r / > < / t h e a d > < b r / > < t b o d y > < b r / > < t r > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 1 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d > < b r / > < t d > 0 < / t d>
0
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
1
0
0
1
0
1
1
0
1
0
1
0
0
0
0
0
0
0
0
1
0
0
1
0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
CC du Val de l'Oise
200040426
25


0
0
0
1
0
0
1
1
1
0
0
0
1
1
0
1
1
0
0
0
1
0
0
0
0
0
0
0
1
0
1
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
1
0
0
0
1
1
1
1
1
1
0
0
1
0
0
0
0
0
0
0
1
0
0
1
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
1
0
0
1
CC de l'Est de la Somme
200070985
30


0
0
0
0
0
1
1
1
1
0
0
0
1
1
0
1
1
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
1
0
1
0
1
1
1
1
0
1
0
0
0
0
0
0
1
0
0
0
0
1
0
1
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
0
CC du Pays de Bray
246000913
29



I received many solutions from the Data Science S.E. here, and I'm willing to try them. But I'm using Java and Spark 3.5.4 so I have to translate the code.
To perform the job, I have created an UDF function whose meant prototype is:

Double similariteCompetences(String sirenGroupement, String[] competencesIntercoCandidate, String[] competencesIntercoReference) и реализуется так:
/** Les codes des compétences étudiées */
private final String[] codesCompetences = {
"C1010", "C1015", "C1020", "C1025", "C1030", "C1502", "C1505", "C1507", "C1510", "C1515",
"C1520", "C1525", "C1528", "C1529", "C1530", "C1531", "C1532", "C1533", "C1534", "C1535",
"C1540", "C1545", "C1550", "C1555", "C1560", "C2005", "C2010", "C2015", "C2510", "C2515",
"C2520", "C2521", "C2525", "C2526", "C3005", "C3010", "C3015", "C3020", "C3025", "C3210",
"C3220", "C3505", "C3510", "C3515", "C4005", "C4006", "C4007", "C4008", "C4010", "C4015",
"C4016", "C4017", "C4020", "C4025", "C4505", "C4510", "C4515", "C4520",
"C4525", "C4530", "C4531", "C4532", "C4535", "C4540", "C4545", "C4550", "C4555", "C4560",
"C5005", "C5010", "C5015", "C5210", "C5220", "C5505", "C5510", "C5515", "C5520", "C5525",
"C5530", "C5535", "C5540", "C5545", "C5550", "C5555", "C7005", "C7010", "C7012", "C7015",
"C7020", "C7025", "C7030", "C9905", "C9910", "C9915", "C9920", "C9922", "C9923", "C9924",
"C9925", "C9930", "C9935", "C9940", "C9950", "C9999"
};

/**
* Renvoyer le dataset des différences de choix de compétences, ordonné par taux de similarité
* @param intercommunalites Compétences des intercommunalités du jeu de données
* @return Dataset des différences de choix de compétences, avec une colonne "similarite" supplémentaire, ordonné par taux de similarité
*/
private Dataset differencesDeChoixDeCompetencesParUDF(Dataset intercoDeReference, Dataset intercommunalites) {
this.sparkSession.udf().register("similariteCompetences", (UDF3)
(sirenGroupement, competencesIntercoCandidate, competencesIntercoReference) -> {
scala.collection.Iterator itCandidat = competencesIntercoCandidate.iterator();
scala.collection.Iterator itReference = competencesIntercoReference.iterator();

int nombreCompetencesEquivalentes = 0;

while(itCandidat.hasNext() && itReference.hasNext()) {
nombreCompetencesEquivalentes += itCandidat.next().equals(itReference.next()) ? 1 : 0;
}

return (double)nombreCompetencesEquivalentes / (double)GroupementsPerimetresITCase.this.codesCompetences.length;
}, DataTypes.DoubleType);

Column similarite = callUDF("similariteCompetences", SIREN_GROUPEMENT.col(), columnCompetences(intercommunalites), columnCompetences(intercoDeReference));

return intercommunalites.withColumn("similarite", similarite).orderBy(similarite.desc());
}

Я ожидаю, что для каждого местного органа власти будет добавлен столбец «похожий» от 0 до 1,0, показывающий, сколько это стоит. аналогично моей ссылке.
Но при запуске этот метод устанавливает значение 1,0 для каждой строки.
Оба массива компетенции, одна из справочных местных властей, одна из местных авторитетный кандидат для сравнения всегда равны.
Сложная часть:
Чтобы добиться успеха в вызове UDF code> для функции, требующей двух параметров массива (которые имеют оба значения 104), мне нужно подготовить столбец массива, указывающий на значения полей наборов данных. Потому что функцию UDF можно вызывать только с аргументами Column. И для этого я использую метод org.apache.spark.sql.functions.array().
/**
* Renvoyer une colonne rapportant toutes les compétences d'une intercommunalité
* @param intercommunalites Le dataset d'intercommunalité(s) vers lequel doivent se référer les colonnes
* @return Column Array de compétences d'une intercommunalité
*/
private Column columnCompetences(Dataset intercommunalites) {
intercommunalites.show(2000, false);

Column[] colonnesCompetences = new Column[this.codesCompetences.length];

for(int index=0; index < this.codesCompetences.length; index++) {
colonnesCompetences[index] = intercommunalites.col(this.codesCompetences[index]);
}

return array(colonnesCompetences);
}

Что происходит:
Примерные списки компетенций в верхней части этого вопроса — это те, которые intercommunalites.show (2000, false) отображается.
И я ожидаю, что этот метод создаст поля таргетинга по столбцам в соответствующих наборах данных.
Но во время выполнения точка останова, установленная на строка:
return (double)nombreCompetencesEquivalentes / (double)GroupementsPerimetresITCase.this.codesCompetences.length; различийDeChoixDeCompetencesParUDF(...)
показывает, что он всегда находит 104 похожих значения, поскольку оба полученных аргумента полностью равны...
Изображение

Изображение

Какие бы строки ни рассматривались.
Согласно дампы наборов данных, они должны были быть разными.
Почему я каждый раз получаю одни и те же значения для обоих параметров?
Гипотеза: intercoReference< /code> управляется intercommunalites неожиданным и чрезмерным способом:
Вот код, который я использую для загрузки intercoReference или intercommunalites в начале теста:
/**
* Les compétences communes d'intercommunalités
*/
@DisplayName("Compétences exclusives d'intercommunalités ou exclues")
@Order(30)
@Test
void competencesExclusivesEtExclues() {
String sirenGroupementCandidat = "247900798";

List competences = new ArrayList();

for(String codeCompetence : this.codesCompetences) {
competences.add(new Column(codeCompetence));
}

List selectClause = new ArrayList(competences);
selectClause.add(NOM_GROUPEMENT.col());
selectClause.add(SIREN_GROUPEMENT.col());
selectClause.add(col("nombreDeCompetencesExercees"));

OptionsCreationLecture options = this.perimetreEPCIDataset.optionsCreationLecture();

// Compétences des communautés de communes
Dataset competencesCC = this.perimetreEPCIDataset.rowPerimetres(options, new HistoriqueExecution(), 2024, true, new EPCIPerimetreTriCommuneSiegeCommuneMembreSirenMembre())
.where(NATURE_JURIDIQUE.col().equalTo("CC") // Les communautés de communes
.and(CODE_COMMUNE_SIEGE.col().equalTo(CODE_COMMUNE_MEMBRE.col()))) // Seulement la ligne de périmètre se rapportant au groupement siège
.sample(0.06, 15)
.select(selectClause.toArray(new Column[]{}));

Dataset intercoReference = competencesCC.where(SIREN_GROUPEMENT.col().equalTo(sirenGroupementCandidat));

LOGGER.info("Intercommunalité candidate : ");
intercoReference.show(1, false);

LOGGER.info("Intercommunalités comparées : ");
differencesDeChoixDeCompetencesParUDF(intercoReference, competencesCC)
.show(2000, false);
}

Предположим, что Dataset intercoReference = компетентностиCC.where(SIREN_GROUPEMENT.col().equalTo(sirenGroupementCandidat)); вызывает эту проблему.
Я изменил эту загрузку на эту:
Dataset competencesCC = this.perimetreEPCIDataset.rowPerimetres(options, new HistoriqueExecution(), 2024, true, new EPCIPerimetreTriCommuneSiegeCommuneMembreSirenMembre())
.where(NATURE_JURIDIQUE.col().equalTo("CC") // Les communautés de communes
.and(CODE_COMMUNE_SIEGE.col().equalTo(CODE_COMMUNE_MEMBRE.col()))) // Seulement la ligne de périmètre se rapportant au groupement siège
.sample(0.06, 15)
.select(selectClause.toArray(new Column[]{}));

Dataset intercoReference = this.perimetreEPCIDataset.rowPerimetres(options, new HistoriqueExecution(), 2024, true, new EPCIPerimetreTriCommuneSiegeCommuneMembreSirenMembre())
.where(NATURE_JURIDIQUE.col().equalTo("CC") // Les communautés de communes
.and(CODE_COMMUNE_SIEGE.col().equalTo(CODE_COMMUNE_MEMBRE.col())) // Seulement la ligne de périmètre se rapportant au groupement siège
.and(SIREN_GROUPEMENT.col().equalTo(sirenGroupementCandidat))) // Celle de référence
.select(selectClause.toArray(new Column[]{}));
< /code>
Но тогда я получаю исключение времени выполнения в строке: < /p>
return intercommunalites.withColumn("similarite", similarite).orderBy(similarite.desc());

разниц набора данныхDeChoixDeCompetencesParUDF(Dataset intercoDeReference, Dataset intercommunalites)
с этим сообщением об ошибке:
org.apache.spark.sql.AnalysisException: [MISSING_ATTRIBUTES.RESOLVED_ATTRIBUTE_APPEAR_IN_OPERATION]
Resolved attribute(s) "C1010", "C1015", "C1020", [...]
missing from "C1010", "C1015", "C1020", [...]
in operator !Project [C1010#389, C1015#390, C1020#391, [...], ... 84 more fields].
Attribute(s) with the same name appear in the operation: "C1010", "C1015", "C1020", [...].
Please check if the right attribute(s) are used.;


Подробнее здесь: https://stackoverflow.com/questions/793 ... fferent-da
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»