Частичное нечеткое сопоставление в больших данных на основе нескольких столбцов - PullRequest
0 голосов
/ 31 октября 2019

У меня есть два файла .csv. Файл 1:

D,FNAME,MNAME,LNAME,GENDER,DOB,snapshot
2,66M,J,Rock,F,1995,201211.0
3,David,HM,Lee,M,,201211.0
6,66M,,Rock,F,,201211.0
0,David,H M,Lee,,1990,201211.0
3,Marc,H,Robert,M,2000,201211.0
6,Marc,M,Robert,M,,201211.0
6,Marc,MS,Robert,M,2000,201211.0
3,David,M,Lee,,1990,201211.0
5,Paul,ABC,Row,F,2008,201211.0
3,Paul,ACB,Row,,,201211.0
4,David,,Lee,,1990,201211.0
4,66,J,Rock,,1995,201211.0

Файл 2:

PID,FNAME,MNAME,LNAME,GENDER,DOB
S2,66M,J,Rock,F,1995
S3,David,HM,Lee,M,1990
S0,Marc,HM,Robert,M,2000
S1,Marc,MS,Robert,M,2000
S6,Paul,,Row,M,2008
S7,Sam,O,Baby,F,2018

Я хочу использовать файл пешеходного перехода, Файл 2, для возврата PID этих наблюдений в файл 1 на основев столбцах FNAME, MNAME, LNAME, GENDER и DOB с использованием нечеткого сопоставления. Мой ожидаемый результат -

D,FNAME,MNAME,LNAME,GENDER,DOB,snapshot,PID
2,66M,J,Rock,F,1995,201211.0,S2
3,David,HM,Lee,M,,201211.0,S3
6,66M,,Rock,F,,201211.0,S2
0,David,H M,Lee,,1990,201211.0,S3
3,Marc,H,Robert,M,2000,201211.0,S0
6,Marc,M,Robert,M,,201211.0,S1
6,Marc,MS,Robert,M,2000,201211.0,S1
3,David,M,Lee,,1990,201211.0,S3
5,Paul,ABC,Row,F,2008,201211.0,S6
3,Paul,ACB,Row,,,201211.0,S6
4,David,,Lee,,1990,201211.0,S3
4,66,J,Rock,,1995,201211.0,S2

Я попробовал предложенный здесь метод, Есть ли какая-либо команда для нечеткого сопоставления в Linux, основанная на нескольких столбцах . Поскольку мой исходный файл 2 имеет размер 14 ГБ , хотя мне удалось разделить файл 1 на меньший размер, около 100 МБ и использовать 120 ГБ ОЗУ для более 24 часов работы, он все еще рухнул, и в результате не было никакого выхода. Мне было интересно, есть ли способы обойти эту проблему, используя Linux или Spark. Чтобы уменьшить вычислительную задачу, я навязываю одно условие, что LNAME должно быть полностью согласовано в нечетком сопоставлении. В приведенной выше ссылке он использовал наивное сопоставление. Есть ли другие методы нечеткого сопоставления? Я очень новичок в этой области. Не могли бы вы оказать мне услугу? Спасибо.

...