Trong thiết lập bài thực hành đã cung cấp một EC2 instance để bạn chạy với tư cách Producer trong tình huống này. Bây giờ bạn sẽ kết nối với EC2 instance, sao chép kho lưu trữ về, build và chạy chương trình Producer. Lưu ý rằng quy trình này giống với quy trình bạn vừa hoàn thành trên Consumer EC2 instance, nhưng chúng ta lặp lại các hướng dẫn ở đây để bạn tiện theo dõi.
Nội dung
ssh -i <path to your downloaded PEM file> ec2-user@<EC2InstanceKinesisProducer>
Ví dụ:
ssh -i ~/Downloads/ee-default-keypair.pem ec2-user@34.212.21.7
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/KinesisProducer
cd
vào thư mục KinesisProducer
và thực thi lệnh:cd KinesisProducer
/opt/apache-maven-3.3.9/bin/mvn package shade:shade
Sẽ mất một chút thời gian để build mã nguồn ứng dụng.
SalesData.csv
. Sao chép tập tin vào EC2 instance bằng cách sử dụng lệnh wget
hoặc curl
đến URL tập tin. Bạn có thể lấy URL của tập tin bằng cách nhấp chuột phải vào đường dẫn sau và sao chép địa chỉ liên kết của nó: SalesData.csv.Khi dữ liệu được gửi đến ElasticSearch, nó sẽ cố gắng suy ra các kiểu dữ liệu trong nội dung và thường thực hiện tốt việc xác định đúng các kiểu dữ liệu. Trong trường hợp của chúng ta, chúng ta đang gửi ngày/giờ của mỗi bản ghi bán hàng dưới kiểu long và vì vậy ElasticSearch sẽ diễn giải trường này chỉ là một số (kiểu long). Thay vào đó, chúng ta cần cảnh báo ElasticSearch rằng nó sẽ diễn giải trường dấu thời gian này là *Date. Chúng ta thực hiện việc này bằng cách tạo các Mapping trong chỉ mục trước khi chúng ta gửi bất kỳ bản ghi nào.
curl -X PUT "https://<ElasticsearchEndpoint>/transactions/" -k -d '{
"mappings": {
"transaction": {
"properties": {
"timestamp": {
"type": "date"
},
"productLine": {
"type": "string"
},
"retailerType": {
"type": "string"
},
"productType": {
"type": "string"
},
"product": {
"type": "string"
},
"quantity": {
"type": "long"
},
"unitCost": {
"type": "double"
},
"totalCost": {
"type": "double"
}
}
}
}
}';
Nếu thành công, bạn sẽ thấy một thông báo.
{“acknowledged”:true}