AI가 다음 친구를 예측하기 전에 먼저이 작업을 수행해야합니다.
이 게시물에서는 Twitch 데이터 세트와의 링크 예측을 계속 진행할 것입니다. AWS가 제공 한 Neptune-Export 유틸리티를 사용하여 Neptune DB 클러스터에서 S3 버킷으로 그래프 데이터를 내보낼 것입니다. 데이터 내보내기 작업을 생성 할 때 ‘Neptune_ML’프로파일을 선택하고 유틸리티가 파이프 라인에서 나중에 사용할 ‘Training-Data-Configuration.json’파일을 생성합니다. 내보낸 데이터는 기능 인코딩 및 데이터 처리에 대한 준비가되며 링크 예측에 필요한 다음 단계입니다.
여기에서 1 부를 읽으십시오.
해왕성 DB의 그래프 데이터
우리는 해왕성 대량 로더 API를 사용하여 정점 및 가장자리 목록을 업로드 한 후 해왕성 DB에있는 그래프 데이터로 시작합니다 (이 안내서의 1 부에 설명 된 바와 같이).
정점은 사용자를 나타냅니다. 모든 정점에는 동일한 속성 세트가 포함되어 있으며 단일 정점은 다음과 같습니다.
{: '153', : 'user', 'days': 1629, 'mature': True, 'views': 3615, 'partner': False}
모든 가장자리에는 동일한 레이블 ( ‘Follows’)이 있으며 각 Edge는 2 명의 사용자를 연결합니다. 단일 모서리는 다음과 같습니다.
{: '0', : 'follows', : {: '255', : 'user'}, : {: '6194', : 'user'}}
우리의 목표는 데이터 파이프 라인의 다음 부분에서 사용할 수 있도록 데이터를 내보내는 것입니다 : 전처리 및 기능 인코딩.
EC2에서 Neptune-Export 유틸리티 실행
우리는 사용할 것입니다 해왕성 수출 데이터베이스에서 데이터를 내보내기 위해 AWS가 제공 한 유틸리티. 유틸리티가 DB에 액세스 할 수 있도록 해왕성 DB 클러스터가있는 VPC 내부의 EC2 인스턴스에서 실행합니다. 유틸리티는 DB에서 데이터를 가져오고 로컬 스토리지 (EBS 볼륨)에 저장 한 다음 내보낸 데이터를 S3에 업로드합니다.
AWS는 VPC 내부에 개인 API를 배포하여 HTTP 요청으로 내보내기 프로세스를 시작할 수있는 CloudFormation 템플릿을 제공하지만 이번에는 이번에는 초점을 맞추지 않을 것입니다. 우리의 목표는 데이터 파이프 라인의 작동 방식 (API를 설정하지 않음)을 보여주는 것이므로 EC2 인스턴스 콘솔을 사용하여 해왕성 유틸리티와 상호 작용합니다. 그건 그렇고, 이러한 콘솔 명령은 AWS Systems Manager 실행 명령 및 단계 함수로 자동화 될 수 있습니다.
해왕성 출입구를 실행할 EC2 인스턴스를 만들어 봅시다. AMI의 경우 Ubuntu 24.04 LTS를 선택합니다. EC2 인스턴스에서 해왕성 클러스터가 도달 할 수 있는지 확인해야하므로 해왕성 클러스터가있는 동일한 VPC에서 인스턴스를 생성하고 인스턴스와 인스턴스와 인스턴스 간의 네트워크 트래픽을 허용하도록 보안 그룹을 구성합니다. 무리. 또한 내보낸 데이터를 포함하기 위해 충분한 크기의 EBS 양을 첨부해야합니다. 우리가 작업중 인 데이터 세트의 경우 8GB 볼륨으로 충분합니다.
인스턴스가 시작되는 동안 아래 정책에 표시된 것처럼 대상 S3 버킷에 대한 쓰기 액세스와 일부 RDS 작업에 대한 IAM 역할을 만들어야합니다. 정책의 첫 번째 진술은 필수이지만, 두 번째 진술은 복제 된 클러스터에서 데이터를 내보내는 경우에만 필요합니다. 복제 된 클러스터에서 데이터를 내보내는 것은이 게시물의 뒷부분에서 논의됩니다.
{
"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 인스턴스와 역할이 준비되면 인스턴스에 역할을 첨부합니다.
다음으로 인스턴스에 해왕성 유틸리티를 설치해야합니다. 이를 위해 인스턴스에 로그인 하여이 명령을 사용하여 JDK 8을 설치하고 유틸리티를 다운로드합니다.
sudo apt update -y
sudo apt install -y openjdk-8-jdk
curl -O
이제 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"
}
}'
여기서는 필요한 매개 변수 만 사용했지만 구성을 쉽게 확장 할 수 있습니다. ‘필터’매개 변수를 사용하여 내보내는 그래프의 어느 부분을 선택할 수 있습니다 : 노드, 가장자리 및 속성을 선택할 수 있습니다.
라이브 데이터베이스에서 데이터를 내보내는 경우 ‘클로네 클러스터‘ 그리고 ‘CloneClusterReplicAcount‘Neptue-Export 유틸리티가 데이터베이스의 스냅 샷을 가져 와서 해당 스냅 샷에서 새로운 Neptune 클러스터를 작성하고 Read Replicas를 배포하고 데이터를 내보내는 데’매개 변수. 이렇게하면 라이브 데이터베이스가 데이터 내보내기의 추가 부하의 영향을받지 않도록 할 수 있습니다.
전체 매개 변수 목록은 여기에서 찾을 수 있습니다.
내보낸 데이터 및 다음 단계보기
내보내기 프로세스가 완료되면 해왕성-수출물은 정점 및 가장자리 수를 포함한 일부 통계를 인쇄합니다.
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 버킷에서 생성 된 파일을 살펴 보겠습니다.
‘노드’및 ‘가장자리’디렉토리에는 데이터를 업로드 할 때 1 부에서 사용한 것과 유사한 노드 및 가장자리 목록이있는 CSV 파일이 포함되어 있습니다. 큰 그래프의 경우 여러 파일이 있지만 데이터 세트는 작고 각 디렉토리에는 하나의 파일 만 있습니다. 또한 있습니다 훈련-데이터-콘 피그레이션 .JSON 프로세스의 다음 단계에서 편집하고 사용할 파일.
한 번 내보내기를하는 경우 대상 S3 버킷의 파일 만 다음 단계에서 사용되므로 EC2 인스턴스와 EBS 볼륨을 삭제하는 것이 안전합니다. 그렇지 않으면 EC2 인스턴스를 중지하여 유휴 시간 동안 청구되지 않도록하십시오 (삭제하지 않는 한 EBS 스토리지에 대해 여전히 요금이 청구됩니다).
이 시점에서 우리는 프로세스의 다음 단계에서 사용할 수있는 형식으로 S3의 그래프 데이터를 가지고 있으며 인코딩 및 데이터 처리 기능을 수행 할 준비가되었습니다. 다음 게시물에서 논의 할 것입니다.
Post Comment