Hướng dẫn Data Pipeline đơn giản với Glue
S3 bucket + dữ liệu
Tạo IAM role cho Glue
Gán các policy sau cho Role:
AmazonS3FullAccess
AWSGlueServiceRole
AmazonAthenaFullAccess
Role sau khi tạo:
Tạo glue crawler để crawl dữ liệu từ S3
Quay lại màn hình Crawler chọn reload:
Crawler đã tạo:
Crawler chạy thành công:
Bảng đã được tạo ra:
Query trong Athena
Muốn biết cách Athena đã tạo bảng preview cho bạn như nào:
CREATE EXTERNAL TABLE `raw_data`(
`col0` bigint,
`col1` string,
`col2` string,
`col3` string,
`col4` string,
`col5` string,
`col6` string,
`col7` string,
`col8` string,
`col9` string,
`col10` string,
`col11` string,
`col12` string,
`col13` string,
`col14` string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://test-datapipeline-yen/raw-data/'
TBLPROPERTIES (
'CrawlerSchemaDeserializerVersion'='1.0',
'CrawlerSchemaSerializerVersion'='1.0',
'UPDATED_BY_CRAWLER'='test-datapipeline-crawler',
'areColumnsQuoted'='false',
'averageRecordSize'='105',
'classification'='csv',
'columnsOrdered'='true',
'compressionType'='none',
'delimiter'=',',
'objectCount'='1',
'recordCount'='9808',
'sizeKey'='1029863',
'typeOfData'='file')
Đây mới chỉ là query từ dữ liệu Crawl được, tuỳ vào nghiệp vụ mà có thể sẽ cần phải transform dữ liệu nữa. Nếu sử dụng transform dữ liệu, thì ta sẽ cần dùng đến ETL job, ETL job có thể transform dữ liệu trước khi crawl, transform dữ liệu đã crawl, transform dữ liệu trước khi đưa vào đích,…
Làm việc với ETL jobs
Ví dụ: Chúng ta có raw data có rất nhiều trường trùng lặp, chúng ta phải thực hiện transform dữ liệu để loại bỏ trùng lặp trước khi craw:
Ta có thể tạo snipnets để dùng với ETL job từ công cụ visual:
Click vào node S3 đã kéo vào để tiến hành thiết lập:
Ở phía bên tay trái, sẽ có hỏi bạn chọn role, chọn role lúc trước đã tạo, sẽ ra được preview data
Nhấn lại vào board thể hiện visual để đóng các thiết lập S3, thiết lập phần khác
Chọn loại transform:
Giả sử ở đây chọn bỏ các trùng lặp
Tiếp tục chọn Target
Giả sử chọn S3, ta sẽ lưu vào một prefix khác trong S3 bucket là transformed-data:
Click vào node target S3 vừa kéo ra để thiết lập:
Sau khi thiết lập:
Lúc này, Glue đã tự sinh ra snipnets cho chúng ta:
Có thể xem script, lưu lại script, và edit,… rồi
Nếu cần customize nhiều thì sẽ phải tự viết PySpark script, nhưng nếu transform đơn giản, thì chúng ta đã làm xong task transform
Sau khi save script thì có thể run:
Ta quay lại S3 kiểm tra:
Lúc này, chúng ta có thể crawl dữ liệu đã được làm sạch và đưa vào Athena để query