Tất tần tật về Data Discovery Platform (DDP)
(eugeneyan.com)Tổng hợp lý do cần có Nemo, Amundsen, DataHub... và các chức năng mà chúng cung cấp
"Vì sao cần DDP? Nó làm gì?"
→ Một nền tảng giúp tìm nhanh dữ liệu cần thiết trong tổ chức, hiểu dữ liệu đó là gì và học cách sử dụng nó
[ Những câu hỏi thường gặp khi tìm dữ liệu ]
→ Có thể tìm dữ liệu "_____" ở đâu? : Đôi khi còn không biết nên tìm bằng từ khóa nào. Tìm tên bảng/cột bằng các từ như click, page view, v.v.
→ Dữ liệu này là gì? : Bảng này có những cột nào, kiểu dữ liệu là gì, các giá trị này mang ý nghĩa gì?
→ Tôi cần yêu cầu quyền truy cập từ ai? : Thông tin về quyền sở hữu dữ liệu và quyền hạn cũng phải là một phần của metadata
→ Dữ liệu này được tạo ra như thế nào? Có đáng tin không? : Ai tạo ra, được tạo qua quy trình nào? Có phải do analyst làm thủ công hàng tháng không? Trong công ty nó được dùng nhiều đến mức nào? Lineage của dữ liệu này là gì?
→ Tôi nên sử dụng dữ liệu này như thế nào? : Những cột nào có liên quan? Cần join với bảng nào? Nên dùng bộ lọc nào để làm sạch dữ liệu? Ai là người sử dụng bảng này nhiều nhất? (Vì có thể hỏi trực tiếp người đó) Những cột nào được dùng nhiều nhất?
→ Dữ liệu này được refresh thường xuyên đến mức nào? : Nếu thỉnh thoảng bị trễ thì tần suất xảy ra là bao lâu? Khoảng thời gian dữ liệu bao phủ là bao nhiêu? Nếu chỉ có vài tuần thì có lẽ không phù hợp cho machine learning.
[ Các chức năng để tìm, hiểu và sử dụng dữ liệu ]
- Tìm dữ liệu bằng tìm kiếm hoặc các cách thông minh hơn
→ Cách cơ bản để tìm dữ liệu mong muốn là tìm trong ElasticSearch metadata như tên cột, mô tả bảng và cột, mô tả hoặc bình luận do người dùng nhập
→ Nếu có nhiều kết quả tìm kiếm thì cần xếp hạng ưu tiên cho chúng. Với Lyft và Spotify, thứ hạng được quyết định bởi mức độ bảng được sử dụng nhiều ra sao. Tức là parse query log để đưa mức sử dụng bảng vào thông tin ranking của ElasticSearch.
→ Nemo của Facebook mở rộng điều này hơn nữa. Nó parse ngôn ngữ tự nhiên của truy vấn bằng spaCy, rồi dùng Unicorn vốn được dùng cho social graph search để xếp hạng thông qua scoring dựa trên kNN.
→ Một cách khác là thông qua gợi ý. Đề xuất những dữ liệu được truy cập và sử dụng nhiều nhất trong tổ chức và trong team.
- Hiểu dữ liệu qua schema, preview, thống kê và lineage
→ Thông tin cơ bản để hiểu một bảng là data schema: tên cột, kiểu dữ liệu, mô tả (Description)
→ Nếu người dùng có quyền đọc thì có thể cung cấp preview dữ liệu (khoảng 100 dòng)
→ Cũng có thể cung cấp thống kê được tính sẵn theo từng cột: số row theo cột, số row null, giá trị lớn nhất/nhỏ nhất/trung bình/trung vị/độ lệch chuẩn, số row duy nhất, và nếu là cột ngày tháng thì là toàn bộ khoảng thời gian dữ liệu
→ Cung cấp data lineage để kiểm tra các quan hệ phụ thuộc trước/sau: với các job ETL (được schedule bằng Airflow) có thể kiểm tra lịch chạy, tình trạng chậm trễ, v.v.
- Học cách sử dụng dữ liệu thông qua hành vi sử dụng của những người khác
→ Sau khi tìm được bảng, làm thế nào để giúp người dùng sử dụng bảng đó? Cách đơn giản là hiển thị những người có liên quan đến bảng đó
→ Chủ sở hữu dữ liệu có thể cấp quyền, còn những người dùng thường xuyên có thể giới thiệu hoặc chia sẻ các điểm cần lưu ý về dữ liệu: Amundsen và DataHub cho phép liên kết người như một entity với bảng
→ Nhưng nếu chỉ dựa vào các chuyên gia hiểu rõ dữ liệu thì có thể tạo ra bottleneck, nên cách scalable hơn là liên kết thêm metadata
→ Có thể cung cấp thống kê sử dụng của từng cột để người dùng tìm được những cột liên quan nhất.
→ Ngoài ra, để biết nên join với bảng nào, sẽ tiện nếu cung cấp danh sách các bảng thường được join cùng và các cột dùng để join. Những dữ liệu này cần parse query log.
→ Để cung cấp thông tin chi tiết hơn về cách dùng dữ liệu, có thể hiển thị các query gần đây với bảng đó, qua đó biết được thực tế người dùng đang lọc dữ liệu như thế nào.
→ Data lineage cũng hữu ích. Có thể biết các bảng downstream đang dùng bảng hiện tại, và hiển thị luôn query tạo ra chúng. Qua đó có thể xác nhận bảng được dùng như thế nào trong các use case khác.
→ Nếu một downstream table đã biết phù hợp với mục đích của tôi thì có thể dùng luôn nó để giảm chi phí tính toán/lưu trữ.
→ Data Access Layer của Twitter, Databook của Uber, Metacat của Netflix đều hỗ trợ lineage
→ Trước khi thực sự sử dụng dữ liệu, người dùng cũng muốn biết nó được cập nhật thường xuyên đến đâu. Việc chỉ rõ dữ liệu được partition theo đơn vị thời gian nào (ngày/giờ, v.v.) sẽ rất hữu ích.
→ DDP có thể tích hợp với các nền tảng như Airflow để kiểm tra các job ETL được schedule và xem chúng mất bao lâu, v.v.
[ So sánh tổng quan giữa các DDP ]
→ Tất cả đều hỗ trợ tìm kiếm free-text dựa trên ElasticSearch hoặc Solr. Amundsen và Lexikon cung cấp tính năng gợi ý trên trang chủ.
→ Tất cả đều hiển thị thông tin bảng cơ bản (schema, mô tả). Amundsen và Databook cung cấp preview dữ liệu và thống kê cột.
→ Phần lớn nền tảng đều tích hợp sẵn data lineage. Amundsen hiện chưa hỗ trợ nhưng có trong roadmap 2020.
→ Có 5 nền tảng được công bố dưới dạng open source
[ So sánh các DDP mã nguồn mở ]
- DataHub (LinkedIn) : https://github.com/linkedin/datahub
→ Được công bố vào tháng 2/2020
→ Hỗ trợ tìm kiếm, table schema, ownership, lineage
→ Hỗ trợ 3 entity là Dataset, User, Group. Có kế hoạch bổ sung các entity như Schemas/Jobs/Metrics/Dashboards
→ Hỗ trợ metadata của Hive, Kafka, RDB (nội bộ còn hỗ trợ nhiều hơn và có thể sẽ tiếp tục công khai thêm)
→ Expedia, TypeForm đã áp dụng; MS, Morgan Stanley, Orange Telecom, ThoughtWorks cũng đang POC
- Amundsen (Lyft) : https://github.com/amundsen-io/amundsen
→ Được công bố vào tháng 10/2019
→ Hỗ trợ tìm kiếm, gợi ý, trang chi tiết bảng thể hiện tốt preview/thống kê cột/chủ sở hữu/người dùng chính. Chưa có lineage nhưng dự kiến sẽ bổ sung
→ Cũng dự kiến cung cấp tích hợp với Data Quality System (có lẽ là Great Expectations - https://greatexpectations.io/)
→ Có một cộng đồng rất tốt: đã phát triển và đóng góp các tích hợp như BigQuery/Redshift/Apache Atlas, v.v.
→ Hỗ trợ tích hợp với hơn 15 loại data source (Redshift, Cassandra, Hive, Snowflake và nhiều RDB khác), dashboard của Tableau, Redash, Mode Analytics, Airflow, v.v.
→ Tài liệu tốt và có thể test local bằng Docker
→ Được hơn 30 tổ chức áp dụng, bao gồm Asana, Instacart, iRobot, Square.
→ Tháng 7/2020 gia nhập Linux AI Foundation như một incubation project mới.
- Metacat (Netflix) : https://github.com/Netflix/metacat
→ Được công bố vào tháng 6/2018
→ Bao gồm tìm kiếm, xem schema, và metric để phân tích chi phí và không gian.
→ Có chức năng thông báo khi bảng/partition thay đổi. Có thể nhận cảnh báo khi bị xóa do các vấn đề như chi phí.
→ Hỗ trợ tích hợp với Hive, Teradata, Redshift, S3, Cassandra, RDS
→ Từng cho biết đang làm tính năng versioning/validation cho schema/metadata.
→ Dù là open source nhưng không có tài liệu nào, nên chưa có công ty nào áp dụng.
- Marquez (WeWork) : https://github.com/MarquezProject/marquez
→ Được công bố vào tháng 10/2018
→ Tập trung vào data quality và lineage
→ Hỗ trợ data governance, data quality thông qua Great Expectations, và catalog cho dataset cùng job
→ Cung cấp WebUI, component Airflow và client Java/Python
→ Có thể test local bằng Docker nhưng tài liệu không nhiều
- Apache Atlas (Hortonworks) : https://atlas.apache.org/
→ Bắt đầu từ tháng 7/2015 như một phần của Data Governance Initiative
→ Phiên bản 1.0 được công bố vào tháng 6/2018 và hiện là 2.1
→ Mục tiêu chính là data governance, giúp tổ chức tuân thủ các yêu cầu về bảo mật/compliance.
→ Có nhiều tính năng phong phú như gắn tag cho tài nguyên, lan truyền tag xuống các dataset downstream, bảo mật cho truy cập metadata
→ Cũng hỗ trợ chức năng thông báo khi metadata thay đổi
→ Hỗ trợ tìm kiếm free-text, xem chi tiết schema, data lineage
→ Cũng hỗ trợ tìm kiếm nâng cao với cú pháp gần giống SQL
→ Hỗ trợ tích hợp với các nguồn metadata như HBase, Hive, Kaflka, v.v.
→ Cũng có thể tạo/sửa metadata qua REST API
→ Tài liệu cũng được làm khá tốt
-
Trường hợp ING triển khai cả Atlas và Amundsen cùng nhau là một ví dụ thú vị https://medium.com/wbaa/…
-
Dù không phải DDP hoàn chỉnh, open source Whale là một công cụ DDP siêu đơn giản, lập chỉ mục nội dung data warehouse bằng Markdown và hỗ trợ tìm kiếm, chỉnh sửa, versioning, v.v.
→ Đáng để xem xét như một công cụ DDP cho developer. https://github.com/dataframehq/whale
- Dù không “sexy” như machine learning, data discovery vẫn là bước đầu tiên quan trọng trong data science workflow
2 bình luận
Ồ, đúng là một bản tổng hợp rất hay. Chắc phải thử Amundsen một lần mới được.
Nemo - nền tảng khám phá dữ liệu của Facebook https://vi.news.hada.io/topic?id=3024
Một ví dụ triển khai DDP khá hiếm ở Hàn Quốc