開始
加載和管理數據
處理數據
政府
引用和資源
2023年5月5日更新
給我們反饋
本文提供了一個示例創建和部署一個端到端的數據處理管道,包括攝入原始數據,轉換數據,處理數據和運行分析。
請注意
本文演示了創建一個完整的數據管道使用磚<一個class="reference internal" href="//m.eheci.com/docs/notebooks/index.html">筆記本電腦和一個磚<一個class="reference internal" href="//m.eheci.com/docs/workflows/jobs/jobs.html">工作編排工作流。磚還提供了<一個class="reference internal" href="//m.eheci.com/docs/delta-live-tables/index.html">三角洲生活表方便的實現數據處理管道。δ住表是一個框架,提供了一個聲明的接口實現數據處理管道,和磚建議使用三角洲的生活表建立可靠、可維護、可測試的數據處理管道。
一個數據管道實現所需的步驟,將數據從源係統,基於需求的數據轉換,將數據存儲在一個目標係統。一個數據管道包括所有必要的流程將原始數據轉化為準備數據,用戶可以使用。例如,一個數據管道可能準備數據,數據分析師和數據科學家可以從數據中提取價值分析和報告。
提取、轉換和加載(ETL)流程是一種常見的數據管道。在ETL處理中,數據從源係統攝取和書麵暫存區域,改變了基於需求(確保數據質量,徹底刪除記錄,等等),然後寫入到目標係統數據倉庫或數據等。
來幫助你開始構建數據管道磚,本文中的例子包括走過創建一個數據處理流程:
使用磚特性探索原始數據集。
創建一個磚筆記本攝取原始源數據和原始數據寫入目標表。
創建一個磚筆記本將原始的源數據,轉換後的數據寫入目標表。
創建一個磚筆記本查詢轉換後的數據。
自動化的數據管道磚的工作。
你登錄到磚和數據科學與工程的工作區。
你有<一個class="reference internal" href="//m.eheci.com/docs/clusters/clusters-manage.html">允許創建一個集群。
如果你沒有集群創建權限,你仍然可以完成大部分的步驟隻要你有以下<一個class="reference internal" href="//m.eheci.com/docs/clusters/clusters-manage.html">訪問一個集群。
在這個例子中使用的數據集的一個子集<一個class="reference external" href="http://labrosa.ee.columbia.edu/millionsong/">百萬歌曲數據集,當代音樂特征和元數據的集合。這個數據是可用的<一個class="reference internal" href="//m.eheci.com/docs/dbfs/databricks-datasets.html">樣本數據集包括在你的磚工作區。
執行數據處理和分析在這個示例中,創建一個集群來提供所需的計算資源運行命令。
點擊計算在側邊欄。
在計算頁麵,點擊創建集群。新的集群頁麵出現。
為集群指定一個唯一的名稱,默認狀態保留剩餘的值,並單擊創建集群。
更多地了解磚集群,明白了<一個class="reference internal" href="//m.eheci.com/docs/clusters/index.html">集群。
常見的創建一個數據管道的第一步是了解管道的源數據。在這個步驟中,您將運行<一個class="reference internal" href="//m.eheci.com/docs/dev-tools/databricks-utils.html">磚公用事業命令一個筆記本檢查源數據和工件。
介紹磚筆記本,看這個視頻:
在側邊欄中,單擊新並選擇筆記本從菜單中。的創建筆記本對話框出現了。
例如,輸入一個名稱的筆記本探索歌曲數據。在默認的語言中,選擇Python。在集群中,選擇您創建的集群或現有的集群。
探索歌曲數據
點擊創建。
查看目錄的內容包含數據集,輸入以下在筆記本的第一個單元格,點擊,並選擇運行單元。
顯示(dbutils。fs。ls(“/ databricks-datasets /歌曲/”))
路徑
的名字
大小
modificationTime
1
dbfs: / / README.md databricks-datasets /歌曲
README.md
1719年
1454620183000
2
dbfs: - 001 / / databricks-datasets /歌曲/數據
數據- 001 /
0
1672791237846
3
dbfs: - 002 / / databricks-datasets /歌曲/數據
數據- 002 /
README文件數據集的信息,包括模式的描述數據。模式信息用於下一步當攝入數據。要查看自述文件的內容,點擊在細胞操作菜單,選擇添加下麵的細胞,輸入以下新細胞,點擊,並選擇運行單元。
與開放(“/ dbfs / databricks-datasets /歌曲/ README.md”)作為f:x=”。加入(f。readline())打印(x)
百萬歌曲樣本數據集= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = # #這個數據來源是一個小的子集(百萬歌曲數據集)(http://labrosa.ee.columbia.edu/millionsong/)。原始數據是由回聲巢。由t Bertin-Mahieux < tb2332‘@’columbia.edu > # #屬性信息- artist_id:字符串- artist_latitude:雙- artist_longitude:雙- artist_location:字符串- artist_name:字符串-持續時間:雙- end_of_fade_in:雙-關鍵:int - key_confidence:雙-響度:雙-釋放:字符串- song_hotnes:雙- song_id:字符串- start_of_fade_out:雙-節奏:雙- time_signature:雙- time_signature_confidence:雙-標題:字符串年:雙- partial_sequence: int……
在本例中是使用的記錄- 001 / / databricks-datasets /歌曲/數據目錄中。查看該目錄的內容,點擊在細胞操作菜單,選擇添加下麵的細胞,輸入以下新細胞,點擊,並選擇運行單元。
- 001 / / databricks-datasets /歌曲/數據
顯示(dbutils。fs。ls(“/ databricks-datasets /歌曲/數據- 001”))
dbfs: / /數據- 001 / header.txt databricks-datasets /歌曲
header.txt
377年
1454633901000
dbfs: / databricks-datasets /歌曲/ - 001 / - 00000部分的數據
部分- 00000
52837年
1454547464000
dbfs: / databricks-datasets /歌曲/ - 001 / - 00001部分的數據
部分- 00001
52469年
1454547465000
…
查看樣品的記錄,單擊在細胞操作菜單,選擇添加下麵的細胞,輸入以下新細胞,點擊,並選擇運行單元。
與開放(“/ dbfs / databricks-datasets /歌曲/數據- 001 / - 00000”)作為f:x=”。加入(f。readline())打印(x)
AR81V6H1187FB48872南南伯爵十六11 213.7073 - 0.0 0.419 - -12.106耶和華軍隊的士兵南SOVNZSZ12AB018A9B8 208.289 - 125.882 2003 0.0播放器——ARVVZQP11E2835DBCB南南Wavves 133.25016 - 0.0 0 0.0 0.282 0.596 0.471578247701 Wavvves SOJTQHQ12A8C143C5F 128.116 - 89.519 1我想見到你(和去看電影)2009——ARFG9M11187FB3BBCB南南納舒厄美國9 c邊247.32689 - 0.0 0.612 - -4.896 2008年聖誕節日編譯期南SOAJSQL12AB0180501 242.196 - 171.278 225261 1.0鬆散舞池0…
從查看記錄的樣本,你可以觀察一下數據。您將使用這些觀察後,處理的數據:
記錄不包含一個頭。相反,頭是存儲在一個單獨的文件在同一目錄中。
製表符分隔值(TSV)格式的文件。
有些字段缺失或無效。
磚推薦使用<一個class="reference internal" href="//m.eheci.com/docs/ingestion/auto-loader/index.html">自動加載程序數據攝取。自動加載程序自動檢測和過程到達雲對象存儲新文件。
磚建議存儲數據<一個class="reference internal" href="//m.eheci.com/docs/delta/index.html">三角洲湖。三角洲湖是一個開源存儲層提供lakehouse ACID事務,使數據。三角洲湖是默認格式表中創建數據磚。
您可以配置自動加載程序加載數據的自動檢測模式,允許您初始化表沒有顯式地聲明數據模式和發展介紹了新列的表模式。這消除了需要手動跟蹤和應用模式會隨著時間而改變。磚建議模式推理在使用自動加載程序。然而,當看到在數據探索一步,歌曲的數據不包含標題信息。因為頭沒有存儲的數據,你需要明確定義的模式,在下一個示例中所示。
例如,輸入一個名稱的筆記本攝取歌曲數據。在默認的語言中,選擇Python。在集群中,選擇您創建的集群或現有的集群。
攝取歌曲數據
第一個單元格輸入以下的筆記本:
從pyspark.sql.types進口倍增式,IntegerType,StringType,StructType,StructField#定義變量中使用下麵的代碼file_path=“/ databricks-datasets /歌曲/數據- 001 /”table_name=“<表名稱>”checkpoint_path=“< checkpoint-path >”#為目的的這個例子中,清除從先前的運行數據。因為自動加載程序#適用於增量加載,在生產應用中你通常不會下降#目標表和檢查點之間運行。火花。sql(f如果存在“刪除表{table_name}”)dbutils。fs。rm(checkpoint_path,真正的)模式=StructType((StructField(“artist_id”,StringType(),真正的),StructField(“artist_lat”,倍增式(),真正的),StructField(“artist_long”,倍增式(),真正的),StructField(“artist_location”,StringType(),真正的),StructField(“artist_name”,StringType(),真正的),StructField(“持續時間”,倍增式(),真正的),StructField(“end_of_fade_in”,倍增式(),真正的),StructField(“關鍵”,IntegerType(),真正的),StructField(“key_confidence”,倍增式(),真正的),StructField(“響度”,倍增式(),真正的),StructField(“發布”,StringType(),真正的),StructField(“song_hotnes”,倍增式(),真正的),StructField(“song_id”,StringType(),真正的),StructField(“start_of_fade_out”,倍增式(),真正的),StructField(“節奏”,倍增式(),真正的),StructField(“time_signature”,倍增式(),真正的),StructField(“time_signature_confidence”,倍增式(),真正的),StructField(“標題”,StringType(),真正的),StructField(“年”,IntegerType(),真正的),StructField(“partial_sequence”,IntegerType(),真正的)])(火花。readStream。格式(“cloudFiles”)。模式(模式)。選項(“cloudFiles.format”,“csv”)。選項(“9”,”\ t”)。負載(file_path)。writeStream。選項(“checkpointLocation”,checkpoint_path)。觸發(availableNow=真正的)。toTable(table_name))
替換:
<表名稱>與三角洲的名稱表包含攝取記錄,例如,pipeline_get_started_raw_song_data。
<表名稱>
pipeline_get_started_raw_song_data
< checkpoint-path >的路徑的目錄DBFS維持檢查點文件,例如,/ tmp / pipeline_get_started / _checkpoint / song_data。
< checkpoint-path >
/ tmp / pipeline_get_started / _checkpoint / song_data
點擊,並選擇運行單元。這個例子定義了使用信息從數據模式自述、攝食的歌曲中包含的所有文件的數據file_path,並將數據寫入指定的差值表table_name。
自述
file_path
table_name
在這個步驟中,您將原始歌曲數據被過濾掉不需要的列和添加一個新的字段包含一個時間戳的創造新紀錄。
例如,輸入一個名稱的筆記本準備歌曲數據。在默認的語言中,選擇SQL。在集群中,選擇您創建的集群或現有的集群。
準備歌曲數據
創建或取代表<表- - - - - -的名字>(artist_id字符串,artist_name字符串,持續時間雙,釋放字符串,節奏雙,time_signature雙,標題字符串,一年雙,processed_time時間戳);插入成<table_name>選擇artist_id,artist_name,持續時間,釋放,節奏,time_signature,標題,一年,current_timestamp()從<生- - - - - -歌曲- - - - - -表- - - - - -的名字>
取代
<表名稱>與三角洲表的名稱包含過濾和轉換記錄,例如,pipeline_get_started_prepared_song_data。
pipeline_get_started_prepared_song_data
< raw-songs-table-name >與三角洲表包含原始的歌曲的名字記錄在上一步中攝取,例如,pipeline_get_started_raw_song_data。
< raw-songs-table-name >
點擊,並選擇運行單元。
在這個步驟中,您將通過添加查詢分析歌曲數據處理管道。這些查詢使用前麵步驟中創建的準備記錄。
例如,輸入一個名稱的筆記本分析歌曲數據。在默認的語言中,選擇SQL。在集群中,選擇您創建的集群或現有的集群。
分析歌曲數據
創建或取代視圖artists_by_year作為選擇artist_name,一年從<準備- - - - - -歌曲- - - - - -表- - - - - -的名字>——刪除記錄的字段不填充在哪裏一年>0;——藝術家發布每年的大多數歌曲嗎?選擇artist_name,數(artist_name)作為num_songs,一年從artists_by_year集團通過artist_name,一年訂單通過num_songsDESC,一年DESC
< prepared-songs-table-name >的名字準備前一步驟中創建的表,例如pipeline_get_started_prepared_song_data。
< prepared-songs-table-name >
點擊在細胞操作菜單,選擇添加下麵的細胞並輸入以下新細胞:
——為你的DJ列表找到歌曲創建或取代視圖danceable_songs作為選擇artist_name,標題,節奏從<準備- - - - - -歌曲- - - - - -表- - - - - -的名字>在哪裏time_signature=4和節奏之間的One hundred.和140年;選擇*從danceable_songs限製One hundred.
運行查詢和查看輸出,點擊運行所有。
您可以創建一個工作流自動化運行數據攝入,處理和分析步驟使用磚的工作。
在你的數據科學與工程工作區,做以下之一:
點擊工作流在側邊欄,然後單擊。
在側邊欄中,單擊新並選擇工作。
在任務出現在對話框任務選項卡中,取代添加一個名稱為你的工作…對你的工作名稱,例如,“工作流”歌曲。
在任務名稱第一個任務,輸入一個名稱,例如,Ingest_songs_data。
Ingest_songs_data
在類型,選擇筆記本任務類型。
在源中,選擇工作空間。
使用文件瀏覽器找到數據攝入筆記本,點擊筆記本名稱,點擊確認。
在集群中,選擇Shared_job_cluster或集群中創建創建一個集群的一步。
創建一個集群
點擊保存任務。
點擊您剛才創建的任務。
在任務名稱任務,輸入一個名稱,例如,Prepare_songs_data。
Prepare_songs_data
使用文件瀏覽器找到數據準備筆記本,點擊筆記本名稱,點擊確認。
在任務名稱任務,輸入一個名稱,例如,Analyze_songs_data。
Analyze_songs_data
使用文件瀏覽器找到數據分析筆記本,點擊筆記本名稱,點擊確認。
工作流運行,點擊。查看<一個class="reference internal" href="//m.eheci.com/docs/workflows/jobs/jobs.html">細節的運行,單擊鏈接開始時間列的運行<一個class="reference internal" href="//m.eheci.com/docs/workflows/jobs/jobs.html">工作運行視圖。單擊每個任務視圖細節任務運行。
查看結果當工作流程完成後,點擊最後的數據分析任務。的輸出頁麵出現並顯示查詢結果。
一個常見需求是運行一個數據管道計劃的基礎上。定義一個時間表運行管道的工作:
點擊工作流在側邊欄。
在的名字列,單擊工作名稱。側板顯示工作細節。
點擊編輯日程在工作細節麵板和設置計劃類型來計劃。
指定時間、起始時間和時區。可選的選擇顯示Cron語法複選框來顯示和編輯的時間表<一個class="reference external" href="http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html">石英Cron語法。
點擊保存。
更多地了解磚筆記本,看到的<一個class="reference internal" href="//m.eheci.com/docs/notebooks/index.html">介紹磚筆記本。
了解更多關於磚工作,明白了<一個class="reference internal" href="//m.eheci.com/docs/workflows/jobs/jobs.html">創建、運行和管理數據磚的工作。
了解更多關於三角洲湖,看到<一個class="reference internal" href="//m.eheci.com/docs/delta/index.html">三角洲湖是什麼?。
了解更多關於δ生活表,請參閱<一個class="reference internal" href="//m.eheci.com/docs/delta-live-tables/index.html">δ生活是什麼表?。