一、Amundsen的概述
Amundsen是由在Lyft工作的數據開發人員在解決數據發現和協作問題時開發的一個開源項目。該項目的目標是為數據方面工作人員更好地使用公司的數據提供支持,降低他們與數據之間的門檻,從而增加數據的可視性和可用性。
Amundsen的核心在於它實現了一個能夠讓人工智慧、機器學習、數據科學、工程人員等方面的人員找到他們所需要的數據,協作開發模型和為新用戶創建他們自己的數據服務的平台。
二、Amundsen實現的數據發現功能
Amundsen的發現模塊是一個核心重點,它能夠快速找到有價值的數據資源。用戶可以使用Amundsen網站或者通過API訪問數據源。這個模塊可以從多個方面幫你發現你需要的數據資源,包括:
1、數據擁有者信息:除了相關的數據集元數據之外,Amundsen還可以展示關於數據擁有者的信息。通過這些信息,用戶可以了解數據集是由哪個團隊開發。”,
“2、准入信息:這是另一個有用的特性,通過它,用戶可了解如何訪問數據集、使用什麼憑證和訪問等等。”,
“3、端對端執行的圖-開發工程師可以在這裡展示他們如何開發數據集的過程。這裡包括了一些工程的核心代碼。”,
“4、最近的查詢信息:Amundsen還會記錄用戶在數據集上查詢的情況,這有助於增加他們對數據集的了解。”,
“5、數據預覽:Amundsen還可以為數據集提供一個查看顯著數據點的數據預覽功能,這對於對數據形式有要求的人群非常有用。”,
“6、數據資源統計:Amundsen也會統計那些頻繁被使用的資源和那些棄用的資源,幫助數據團隊思考如何為可使用度高的資源制定清晰的開發優先順序。”,
“7、標籤:數據集可以被標記,以便認領、發現和過濾。
三、Amundsen的協作功能
除了數據發現模塊之外,Amundsen還提供了一些重要的協作功能,讓開發團隊之間的協作變得更加容易和高效。
1、markdown檔案:數據持有人可以使Amundsen頁面成為實驗室筆記或使用說明。Markdown功能可以實現本地格式良好的評論和代碼示例,例如python代碼示例。”,
“2、數據集的評論:每個數據集頁面都可以通過評論部分進行評論,從而使維護人員可以與其他人員進行溝通,說服和建議等等。”,
“3、貢獻圖表:最近誰對特定的數據集進行了修復,更改或破壞性修改可以通過貢獻圖表展示,這使得對於其他具有相似興趣的貢獻者更容易進行交流和協作。”,
“4、誰正在使用這個數據集?:Amundsen還會展示該數據集的近期使用情況,並給出這個數據集是由哪些有許可權的用戶進行訪問的。
四、Amundsen的代碼示例
from typing import Any, Dict, List, Optional, Tuple from pyhocon import ConfigFactory, ConfigTree from sqlalchemy import or_, and_, text from sqlalchemy.orm import Session, Query from metadata_service.entity.table_detail import TableColumn, Table from metadata_service.exception import NotFoundException from metadata_service.proxy import get_proxy_client from metadata_service.util import UserResourceRel from metadata_service.util.db import create_engine from metadata_service.util.helper import ( get_user_id_from_user_email, get_user_email_domain, get_user_profile_by_user_id, UserException) from metadata_service.db import ( DEFAULT_PAGE_SIZE, make_offset_limit_clause, Pagination) from metadata_service.entity.popular_table import PopularTable from metadata_service.entity.resource_type import ResourceType class TableColumnDao: """ SQLAlchemy Data Access Object for TableColumn """ def __init__(self, config: ConfigTree) -> None: self.db = create_engine(config) def _get_query(self, session: Session) -> Query: """ Get the common query object with all model`s joined :param session: :return: """ return session.query(TableColumn, Table.name)\ .join(Table, and_( or_(TableColumn.table_id == Table.id, TableColumn.table_id == Table.original_id) )) def get_table_columns(self, table_uri: str) -> List[TableColumn]: """ Return the details columns of a table :param table_uri: :return: """ with self.db.connect() as conn: query = self._get_query(Session(bind=conn)) columns = query.filter(Table.uri == table_uri).all() if not columns: raise NotFoundException('TableColumns ' f'for table_uri: {table_uri} not found') return [column.TableColumn for column in columns]
五、Amundsen的優點
Amundsen已經被證明是一個非常有用的平台,對於數據方面的工作人員來說有如下的優點:
1、便於數據發現:Amundsen可以為開發人員提供方便快捷的數據發現流程,它可以幫助他們找到他們所需要的數據資源。同時,該平台還提供了一些其他的功能,例如數據資源擁有者細節、數據源准入信息、端到端的執行圖、標籤等等。通過這些功能,用戶可以輕鬆找到自己需要的數據資源
2、提高協作效率:Amundsen提供了許多協作功能,可以幫助用戶更好地協作開發和共享自己的數據資源。如markdown文件、評論、貢獻表,以及最近使用該數據集的用戶等等。通過這些功能,用戶可以更好地互相溝通和協作,提高開發效率。
六、Amundsen的局限性
Amundsen雖然是一個功能非常強大的平台,但是它仍然有一些局限性:
1、支持的數據類型不夠多;
2、還是需要用戶手動去記錄使用數據集並為數據集添加有價值的描述和標籤等數據點。
七、結論
綜合來說,Amundsen是一個功能強大的平台,對於數據工作人員來說非常有用。它可以為用戶提供快速的數據發現功能,並提供了多種協作功能,可以幫助用戶更好地協作開發和共享自己的數據資源,提高開發效率。不過它也存在局限性,例如它只支持有限的數據類型,用戶仍需手動為數據集添加有意義的描述和標籤等數據點。總之,Amundsen的優點遠遠大於局限性,值得嘗試使用。
原創文章,作者:TMJA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/136589.html