paint-brush
Նախքան արհեստական ինտելեկտը կանխատեսում է ձեր հաջորդ ընկերոջը, նախ պետք է դա անիկողմից@andrei9735
458 ընթերցումներ
458 ընթերցումներ

Նախքան արհեստական ինտելեկտը կանխատեսում է ձեր հաջորդ ընկերոջը, նախ պետք է դա անի

կողմից Andrei7m2025/02/11
Read on Terminal Reader

Չափազանց երկար; Կարդալ

Այս գրառման մեջ մենք կշարունակենք աշխատել Twitch տվյալների բազայի հետ կապի կանխատեսման վրա:
featured image - Նախքան արհեստական ինտելեկտը կանխատեսում է ձեր հաջորդ ընկերոջը, նախ պետք է դա անի
Andrei HackerNoon profile picture

Այս գրառման մեջ մենք կշարունակենք աշխատել Twitch տվյալների բազայի հետ կապի կանխատեսման վրա. մենք կարտահանենք գրաֆիկի տվյալները Neptune DB կլաստերից դեպի S3 դույլ՝ օգտագործելով AWS-ի կողմից տրամադրված neptune-export օգտակար ծրագիրը: Մենք կընտրենք «neptune_ml» պրոֆիլը, երբ ստեղծենք տվյալների արտահանման առաջադրանքը, և կոմունալ ծրագիրը կստեղծի «training-data-configuration.json» ֆայլը, որը մենք հետագայում կօգտագործենք խողովակաշարում: Արտահանված տվյալները պատրաստ կլինեն գործառույթների կոդավորման և տվյալների մշակման համար, ինչը հաջորդ քայլն է, որը անհրաժեշտ է հղումների կանխատեսման համար:


1-ին մասը կարդացեք այստեղ ։

ԳՐԱՖԻԿ ՏՎՅԱԼՆԵՐԸ ՆԵՊՏՈՒՆ DB-ում

Մենք սկսում ենք գրաֆիկական տվյալներից, որոնք մենք ունենք Neptune DB-ում, գագաթների և եզրերի ցուցակները վերբեռնելուց հետո, օգտագործելով Neptune Bulk Loader API-ն (ինչպես նկարագրված է այս ուղեցույցի 1-ին մասում):


Գագաթները ներկայացնում են օգտվողներին: Բոլոր գագաթները պարունակում են հատկությունների նույն շարքը, և մեկ գագաթն ունի հետևյալ տեսքը.

 {<T.id: 1>: '153', <T.label: 4>: 'user', 'days': 1629, 'mature': True, 'views': 3615, 'partner': False}


Բոլոր եզրերն ունեն նույն պիտակը («հետևում է»), յուրաքանչյուր ծայրը կապում է 2 օգտագործողի: Մեկ եզրն ունի հետևյալ տեսքը.

 {<T.id: 1>: '0', <T.label: 4>: 'follows', <Direction.IN: 'IN'>: {<T.id: 1>: '255', <T.label: 4>: 'user'}, <Direction.OUT: 'OUT'>: {<T.id: 1>: '6194', <T.label: 4>: 'user'}}


Մեր նպատակն է արտահանել տվյալները, որպեսզի դրանք կարողանան օգտագործվել մեր տվյալների խողովակաշարի հաջորդ մասում՝ նախնական մշակում և գործառույթների կոդավորում:

ՆԵՊՏՈՒՆ-ԷՔՍՊՈՐՏ ՕԳՏԱԳՈՐԾՄԱՆ ՕԳՏԱԳՈՐԾՈՒՄԸ EC2-ի վրա

Մենք կօգտագործենք AWS-ի կողմից տրամադրված neptune-export ծրագիրը տվյալների բազայից տվյալների արտահանման համար: Կոմունալ ծառայությանը մուտք դեպի DB թույլ տալու համար մենք այն կգործարկենք EC2 օրինակով VPC-ի ներսում, որտեղ գտնվում է Neptune DB կլաստերը: Կոմունալ ծրագիրը կստանա տվյալները DB-ից, կպահի դրանք տեղական պահեստում (EBS ծավալ), այնուհետև կվերբեռնի արտահանված տվյալները S3:


Չնայած AWS-ը տրամադրում է Cloudformation ձևանմուշ, որը տեղադրում է մասնավոր API ձեր VPC-ի ներսում՝ թույլ տալու արտահանման գործընթացը սկսել HTTP հարցումով, մենք այս անգամ չենք կենտրոնանա դրա վրա: Քանի որ մեր նպատակն է ցույց տալ, թե ինչպես է աշխատում տվյալների խողովակաշարը (և ոչ թե ստեղծել API), մենք պարզապես կօգտագործենք EC2 օրինակի վահանակը՝ նեպտուն-արտահանման օգտակար ծառայության հետ փոխգործակցելու համար: Ի դեպ, կոնսոլի այդ հրամանները կարող են ավտոմատացվել AWS Systems Manager Run Command-ի և Step Functions-ի միջոցով:


Եկեք ստեղծենք EC2 օրինակը, որի վրա մենք կգործարկենք նեպտուն-արտահանումը: AMI-ի համար մենք ընտրում ենք Ubuntu 24.04 LTS: Մենք պետք է համոզվենք, որ Neptune կլաստերը հասանելի է EC2 օրինակից, այնպես որ մենք կստեղծենք օրինակը նույն VPC-ում, որտեղ գտնվում է Neptune կլաստերը, և մենք կկազմաձևենք անվտանգության խմբերը, որպեսզի թույլ տան ցանցային տրաֆիկը օրինակի և կլաստերի միջև: Մենք նաև պետք է կցենք բավարար չափի EBS ծավալ՝ արտահանվող տվյալները պարունակելու համար: Տվյալների հավաքածուի համար, որի վրա մենք աշխատում ենք, բավական է 8 ԳԲ ծավալը:


Մինչ օրինակը սկսվում է, մենք պետք է ստեղծենք IAM դեր, որը թույլ է տալիս գրելու մուտք դեպի նպատակակետ S3 դույլ, ինչպես նաև որոշ RDS գործողություններ, ինչպես ցույց է տրված ստորև ներկայացված քաղաքականության մեջ: Թեև քաղաքականության առաջին հայտարարությունը պարտադիր է, երկրորդը անհրաժեշտ է միայն այն դեպքում, եթե դուք տվյալներ արտահանում եք կլոնավորված կլաստերից: Կլոնավորված կլաստերներից տվյալների արտահանումը կքննարկվի ավելի ուշ այս գրառման մեջ:

 { "Version": "2012-10-17", "Statement": [ { "Sid": "RequiredPart", "Effect": "Allow", "Action": [ "rds:ListTagsForResource", "rds:DescribeDBInstances", "rds:DescribeDBClusters" ], "Resource": "*" }, { "Sid": "OptionalPartOnlyRequiredForExportingFromClonedCluster", "Effect": "Allow", "Action": [ "rds:AddTagsToResource", "rds:DescribeDBClusters", "rds:DescribeDBInstances", "rds:ListTagsForResource", "rds:DescribeDBClusterParameters", "rds:DescribeDBParameters", "rds:ModifyDBParameterGroup", "rds:ModifyDBClusterParameterGroup", "rds:RestoreDBClusterToPointInTime", "rds:DeleteDBInstance", "rds:DeleteDBClusterParameterGroup", "rds:DeleteDBParameterGroup", "rds:DeleteDBCluster", "rds:CreateDBInstance", "rds:CreateDBClusterParameterGroup", "rds:CreateDBParameterGroup" ], "Resource": "*" } ] }

Դուք կարող եք թույլ տալ մուտք գործել միայն թիրախային կլաստերի (բոլոր կլաստերների փոխարեն)՝ խմբագրելով «Ռեսուրս» դաշտը:


Դերը պետք է ունենա նաև վստահության քաղաքականություն, որը թույլ կտա EC2-ին ստանձնել այդ դերը.

 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Երբ EC2 օրինակը և դերը պատրաստ լինեն, մենք դերը կկցենք օրինակին:


Հաջորդը, մենք պետք է օրինակի վրա տեղադրենք neptune-export ծրագիրը: Դա անելու համար մենք մուտք գործենք օրինակ և կօգտագործենք այս հրամանները JDK 8-ը տեղադրելու և կոմունալ ծրագիրը ներբեռնելու համար.

 sudo apt update -y sudo apt install -y openjdk-8-jdk curl -O https://s3.amazonaws.com/aws-neptune-customer-samples/neptune-export/bin/neptune-export.jar

Այժմ, երբ մենք պատրաստել ենք EC2 օրինակը՝ նպատակակետ S3 դույլը, և IAM-ին կցել ենք այն դերը, որը թույլ է տալիս մուտք գործել դեպի նպատակակետ S3 դույլ, մենք կարող ենք սկսել տվյալների արտահանումը: Մենք կօգտագործենք այս հրամանը՝ գործընթացը սկսելու համար՝ ապահովելով անհրաժեշտ պարամետրերը որպես JSON օբյեկտ.

 java -jar /home/ubuntu/neptune-export.jar nesvc \ --root-path /home/ubuntu/neptune-export \ --json '{ "command": "export-pg", "outputS3Path" : "s3://YOUR_TARGET_S3_BUCKET/neptune-export", "params": { "endpoint" : "YOUR_CLUSTER_ENDPOINT", "profile": "neptune_ml" } }'

Մենք այստեղ օգտագործել ենք միայն պահանջվող պարամետրերը, բայց դուք հեշտությամբ կարող եք ընդլայնել կազմաձևը: Դուք կարող եք ընտրել, թե գրաֆիկի որ մասն եք արտահանում, օգտագործելով «ֆիլտր» պարամետրը. կարող եք ընտրել հանգույցներ, եզրեր և դրանց հատկությունները:


Եթե դուք տվյալներ եք արտահանում կենդանի տվյալների բազայից, կարող եք օգտագործել « cloneCluster » և « cloneClusterReplicaCount » պարամետրերը, որպեսզի neptue-export utility-ը նկարի տվյալների բազան, ստեղծի նոր Նեպտունի կլաստեր այդ նկարից, տեղակայի կարդալու կրկնօրինակները և օգտագործի դրանք տվյալների արտահանման համար: Դրանով դուք կարող եք համոզվել, որ տվյալների արտահանման լրացուցիչ բեռը չի ազդի կենդանի տվյալների բազայի վրա:

Պարամետրերի ամբողջական ցանկը կարող եք գտնել այստեղ ( https://docs.aws.amazon.com/neptune/latest/userguide/export-parameters.html ):

ԱՐՏԱՀԱՆՎԱԾ ՏՎՅԱԼՆԵՐԻ ԴԻՏՈՒՄ ԵՎ ՀԱՋՈՐԴ ՔԱՅԼԵՐԸ

Երբ արտահանման գործընթացն ավարտված է, neptune-export-ը տպում է որոշ վիճակագրություն, ներառյալ գագաթների և եզրերի քանակը.

 Source: Nodes: 7126 Edges: 70648 Export: Nodes: 7126 Edges: 70648 Properties: 28504 Details: Nodes: user: 7126 |_ days {propertyCount=7126, minCardinality=1, maxCardinality=1, recordCount=7126, dataTypeCounts=[Integer:7126]} |_ mature {propertyCount=7126, minCardinality=1, maxCardinality=1, recordCount=7126, dataTypeCounts=[Boolean:7126]} |_ views {propertyCount=7126, minCardinality=1, maxCardinality=1, recordCount=7126, dataTypeCounts=[Integer:7126]} |_ partner {propertyCount=7126, minCardinality=1, maxCardinality=1, recordCount=7126, dataTypeCounts=[Boolean:7126]} Edges: (user)-follows-(user): 70648

Եվ հետո այն բեռնում է արտահանված տվյալները S3:


Եկեք նայենք այն ֆայլերին, որոնք ստեղծվում են թիրախային S3 դույլով.

















«Հանգույցներ» և «եզրեր» գրացուցակները պարունակում են CSV ֆայլեր՝ հանգույցների և եզրերի ցուցակներով, որոնք նման են այն բանին, ինչ մենք օգտագործել ենք Մաս 1-ում, երբ տվյալները վերբեռնել ենք: Մեծ գրաֆիկների համար կան մի քանի ֆայլեր, բայց մեր տվյալների հավաքածուն փոքր է, և յուրաքանչյուր գրացուցակում կա ընդամենը մեկ ֆայլ: Կա նաև training-data-configuration.json ֆայլը, որը մենք կխմբագրենք և կօգտագործենք մեր գործընթացի հաջորդ քայլում:


Եթե դուք կատարում եք մեկանգամյա արտահանում, ապա այժմ ապահով է ջնջել EC2 օրինակը և EBS ծավալը, քանի որ հաջորդ քայլում կօգտագործվեն միայն թիրախային S3 դույլի ֆայլերը: Հակառակ դեպքում, դուք կարող եք պարզապես դադարեցնել EC2 օրինակը, որպեսզի խուսափեք պարապ ժամանակի համար գանձվելուց (դուք դեռ կգանձեք EBS պահեստավորման համար, քանի դեռ չեք ջնջել այն):


Այս պահին մենք ունենք գրաֆիկի տվյալները S3-ում այն ձևաչափով, որը կարող է օգտագործվել գործընթացի հաջորդ քայլում, և մենք պատրաստ ենք կատարել գործառույթների կոդավորում և տվյալների մշակում, որոնք կքննարկվեն մեր հաջորդ գրառման մեջ: