特性工程統一目錄

預覽

這個特性是在公共預覽

這個頁麵描述如何創建和使用特性表統一目錄。

此頁麵僅適用於工作空間,為統一啟用目錄。如果沒有啟用您的工作區目錄,統一工作區中的工程特性存儲特性

請注意

在磚運行時13.1毫升,下麵,目錄,模式和表名隻能包含字母數字字符和下劃線(_)。

需求

特性工程統一目錄需要磚運行時的13.2毫升以上。此外,目錄metastore必須統一特權模式版本1.0

可以使用功能存儲與統一目錄與其他數據磚運行時版本以下限製:

創建一個目錄和一個模式功能表統一目錄

您必須創建一個新的目錄或者使用一個現有的目錄功能表。

創建一個新的目錄,你必須有創建目錄上的特權metastore

%sql創建目錄如果存在<目錄- - - - - -的名字>

使用現有的目錄,你必須有使用目錄目錄上的權限。

%sql使用目錄<目錄- - - - - -的名字>

功能表中必須存儲在一個統一的目錄模式。目錄中創建一個新的模式,你必須有創建模式目錄上的權限。

%sql創建模式如果存在<模式- - - - - -的名字>

在統一目錄創建一個功能表

請注意

您還可以使用現有的三角洲表統一目錄特性表。看到使用現有的三角洲表統一目錄特性表

功能表統一目錄三角洲表由統一目錄管理。功能表必須有一個主鍵。功能表的名稱統一目錄有一個三級結構,<目錄名稱>。<模式名稱>。<表名稱>

您可以使用FeatureStoreClient創建一個特性表如下:

  1. 編寫的Python函數計算功能。每個函數的輸出應該是一個Apache火花DataFrame獨特的主鍵。主鍵可以包含一個或多個列。

  2. 通過實例化一個創建一個功能表FeatureStoreClient和使用create_table

  3. 填充功能表使用write_table

databricks.feature_store進口FeatureStoreClientfs=FeatureStoreClient()#準備功能DataFramedefcompute_customer_features(數據):“特性計算代碼返回DataFrame customer_id“主鍵””通過customer_features_df=compute_customer_features(df)#創建功能表與“customer_id”主鍵。#從compute_customer_features DataFrame輸出的模式customer_feature_table=fscreate_table(的名字=“ml.recommender_system.customer_features”,primary_keys=“customer_id”,模式=customer_features_df模式,描述=“客戶特性”)#一個替代方法是使用“create_table”並指定“df”的論點。#這段代碼自動保存功能的底層δ表。# customer_feature_table = fs.create_table (#……# df = customer_features_df,#……#)#使用複合主鍵,通過所有主鍵列create_table電話# customer_feature_table = fs.create_table (#……# primary_keys = (“customer_id”、“日期”),#……#)

使用現有的三角洲表統一目錄特性表

統一目錄中的任何三角洲表有一個主鍵可以在統一功能表目錄。您可以使用現有的三角洲表在統一目錄功能表通過聲明主鍵約束在桌子上。

請注意

  • 隻有表所有者可以聲明主鍵約束。主人的名字是顯示在表數據瀏覽器的詳細信息頁麵。

  • 您需要驗證的數據類型三角洲表中存儲支持功能。看到支持的數據類型

首先,設置主鍵列。每個主鍵列,運行:

%sql改變<full_table_name>改變<pk_col_name>

然後,改變表添加主鍵約束:

%sql改變<full_table_name>添加約束<pk_name>關鍵(pk_col1,pk_col2,…)

pk_name主鍵約束的名稱。按照慣例,你可以用表名(沒有模式和目錄)_pk後綴。例如,一個表的名稱“ml.recommender_system.customer_features”customer_features_pk作為其主鍵約束的名稱。

添加主鍵約束之後放在桌子上,你可以看到桌子上的UI特性存儲。

統一目錄訪問控製功能表中

訪問控製功能表的統一目錄是由統一目錄管理。看到統一目錄權限

在統一目錄更新功能表

你可以更新一個功能表統一目錄通過添加新特性或通過修改特定行基於主鍵。

以下功能表元數據不應該被更新:

  • 主鍵。

  • 分區鍵。

  • 現有功能部件的名稱和數據類型。

改變會導致下遊管道,使用培訓和服務功能模型。

將新功能添加到現有功能表統一目錄

您可以將新功能添加到現有特性表兩種方式中的一種:

  • 更新現有的特性計算功能和運行write_tableDataFrame返回。這個更新功能表模式和合並新特性值基於主鍵。

  • 創建一個新的特性計算函數值計算新特性。這個新的計算函數必須包含返回的DataFrame功能表的主鍵和分區鍵(如果定義)。運行write_table與DataFrame編寫新功能到現有的功能表,使用相同的主鍵。

隻更新特定的功能表中的行

使用模式=“合並”write_table。主鍵的行不存在DataFrame發送的write_table電話保持不變。

fswrite_table(的名字=“ml.recommender_system.customer_features”,df=customer_features_df,模式=“合並”)

安排一個工作表更新功能

確保功能特性表中總是有最新值,磚建議你創建一個工作運行一個筆記本表定期更新功能,如每天。如果你已經有一個非正常的工作,你可以將它轉換成一個安排的工作確保特性值總是最新的。

代碼更新表使用一個特征模式=“合並”,如以下示例所示。

fs=FeatureStoreClient()customer_features_df=compute_customer_features(數據)fswrite_table(df=customer_features_df,的名字=“ml.recommender_system.customer_features”,模式=“合並”)

存儲過去值的日常功能

用一個複合主鍵定義一個功能表。包括主鍵的日期。例如,對於一個功能表store_purchases,您可以使用一個複合主鍵(日期,user_id)和分區鍵日期為有效的讀取。

fscreate_table(的名字=“ml.recommender_system.customer_features”,primary_keys=(“日期”,“customer_id”),partition_columns=(“日期”),模式=customer_features_df模式,描述=“客戶特性”)

然後,您可以創建代碼來讀取從功能表過濾日期感興趣的時期。

您還可以創建一個時間序列特征表通過指定日期作為時間戳列鍵使用timestamp_keys論點。

fscreate_table(的名字=“ml.recommender_system.customer_features”,primary_keys=(“日期”,“customer_id”),timestamp_keys=(“日期”),模式=customer_features_df模式,描述=“客戶timeseries特征”)

當你使用這使時間點查找create_training_setscore_batch。係統執行的時間戳的加入,使用timestamp_lookup_key你指定。

保持功能表,建立定期工作寫功能,或流新特性值到功能表中。

創建一個流特性計算管道更新功能

創建一個流特性計算管道,通過流媒體DataFrame作為參數write_table。這個方法返回一個StreamingQuery對象。

defcompute_additional_customer_features(數據):“返回流DataFrame“‘通過customer_transactions=火花readStream負載(“dbfs: /事件/ customer_transactions”)stream_df=compute_additional_customer_features(customer_transactions)fswrite_table(df=stream_df,的名字=“ml.recommender_system.customer_features”,模式=“合並”)

從功能表統一目錄讀取

使用read_table讀特性值。

fs=feature_storeFeatureStoreClient()customer_features_df=fsread_table(的名字=“ml.recommender_system.customer_features”,)

統一目錄中搜索和瀏覽功能表

使用功能UI搜索或瀏覽功能表統一目錄。

  1. 點擊功能存儲圖標特性在側邊欄顯示UI的特性。

  2. 選擇目錄的目錄選擇器來查看所有可用的特性表目錄。在搜索框中,輸入的全部或部分功能表的名稱,功能,或評論。您還可以輸入的全部或部分鍵或值的標簽。搜索文本是不區分大小寫的。

    特征搜索示例

功能表統一元數據目錄

使用get_table功能表的元數據。

databricks.feature_store進口FeatureStoreClientfs=FeatureStoreClient()英國《金融時報》=fsget_table(“ml.recommender_system.user_feature_table”)打印(英國《金融時報》特性)

標簽的功能表統一目錄

標簽是鍵值,您可以創建和使用搜索功能表。您可以創建、編輯和刪除標簽使用數據瀏覽界麵或者是Python API特性存儲

創建功能表與標簽使用Python特性存儲API

databricks.feature_store進口FeatureStoreClientfs=FeatureStoreClient()customer_feature_table=fscreate_table(#……標簽={“tag_key_1”:“tag_value_1”,“tag_key_2”:“tag_value_2”,},#……)

添加、更新和刪除標簽使用Python特性存儲API

databricks.feature_store進口FeatureStoreClientfs=FeatureStoreClient()#插入一個標簽fsset_feature_table_tag(table_name=“my_table”,關鍵=“質量”,價值=“黃金”)#刪除一個標簽fsdelete_feature_table_tag(table_name=“my_table”,關鍵=“質量”)

刪除一個表統一目錄功能

您可以刪除功能表統一目錄通過直接刪除三角洲表中統一使用的目錄數據瀏覽界麵或者使用Python API特性存儲

請注意

  • 刪除功能表可以導致上遊生產商和下遊消費者意想不到的失敗(模型、端點和安排工作)。

  • 當你刪除一個功能表統一目錄,底層三角洲表也下降了。

  • drop_table不支持在磚運行時的13.1毫升以下。使用SQL命令來刪除表。

您可以使用drop_table刪除一個功能表統一目錄:

fsdrop_table(的名字=“ml.recommender_system.customer_features”)

或者你可以使用SQL命令來刪除三角洲表統一目錄:

%sql下降<full_table_name>

支持的數據類型

與統一目錄支持以下特性存儲PySpark數據類型:

  • IntegerType

  • FloatType

  • BooleanType

  • StringType

  • 倍增式

  • LongType

  • TimestampType

  • DateType

  • ShortType

  • ArrayType

  • BinaryType

  • DecimalType

  • MapType

上麵列出的數據類型支持特性類型常見的機器學習應用。例如:

  • 你可以儲存密度向量,張量和嵌入的ArrayType

  • 你可以存儲稀疏向量,張量和嵌入MapType

  • 你可以存儲文本StringType

當發布到在線商店,ArrayTypeMapType功能是存儲在JSON格式。