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