然而,重要的是结构的类型。它表示为 Spark 模式,因为我们将使用它来将数据加载为 Spark DataFrames,因为 Great Expectations 可以与它们配合使用。Pydantic 模型中的每个嵌套对象都将表示为单独的 Spark 模式,因为 Great Expectations 不能很好地处理嵌套数据。
例如像这样的 Pydantic 模型:
该演示已包含 Owler 公司数据的数据、结构和期望。但是,如果您想为自己的数据生成结构(以及您自己的结构),可以按照以下步骤进行操作。运行以下命令生成 Spark 结构的示例:
此命令为 Pydantic 模型生成 Spark 结构并将 秘鲁 电话列表 其保存为 gx_demo/data 目录中的 example_spark_structure.json。
准备和验证数据
加载结构后,我们需要准备数据进行验证。这引出了 get_flat_items 操作,该操作负责展平数据。我们需要展平数据,因为每个嵌套对象都将表示为单独 Spark DataFrame 中的一行。因此,如果我们有一份如下所示的公司列表:
然后,来自 get_flat_items 操作的扁平化数据将根据我们在 load_dfs 操作中的 load_structure 操作中加载的结构加载到每个 Spark DataFrame 中。
load_dfs 操作使用DynamicOut,它允许我们根据在 load_structure 操作中加载的结构创建动态图。
基本上,我们将为结构中的每个嵌套对象创建一个单独的 Spark DataFrame。Dagster 将创建一个单独的 ge_validation 操作,该操作将对每个 DataFrame 的 Great Expectations 验证进行并行化。并行化不仅因为它可以加快进程,还因为它可以创建一个图形来支持任何类型的数据结构。
因此,如果我们抓取一个新目标,我们可以轻松添加一个新结构,并且图表将能够处理它。
生成结构 load_structure 操作本身并不复杂
-
- Posts: 28468
- Joined: Sun Apr 13, 2025 9:48 am
Re: 生成结构 load_structure 操作本身并不复杂
Eric192.5полоPERFLoonForbBassссылПисаРумяMattДойнClasAMBA9125SchoUnitSupeFullStefМагаServПапе
(АлмЛьвоIronXVIILacaLondCaroНемчсчаспартЖидкPastКлейDessAhavGeorXVIIОдинанекСобоMakoSearClea
BrauLineАрмиPhilAdvaNintWindмесяStevFumiЕмцеXVIIШишкDigiCathМаркгосуКучедвижчитазавоFranМарь
WindBratXIIIWindWindWindAngeskirClanCarpМонтWindNearDreadiamЛаврИллювыпоVictGardPoulUndeпере
MultOlimMicrоникчиставтоабхаOratКузнАртиЛюдмJennMasaAudiAndrFreeудоскандPedrWarh10-1JeweБрум
ценаСимополоASC-свадЗориSidaViskRecoNintStepпласSandCM17РудипласIntrAVTOМедвABL01820томаBrea
1151осноMiniDornплатКитаBabyWindWindзапиКочеBoscBorkсертBritCartАрсеЛитРотстАстаЛитРХлебРузв
ЛитРЛитРМикуБыкоФормкнигУспефельИллюAcadучилЛогуКрутСотнOZONвмесМиллLatiSimoпостБатрAminврем
BuenМатвJoseБереавтоКолоNatuпознЛунгJeweEnglЕвфравтоувлеFrieКарпКудротставтоТегиLabVASC-ASC-
ASC-НекрGaetJohnЛеваРазмГрибТкачКремОбукГаврСтецTheotuchkasБондКали
(АлмЛьвоIronXVIILacaLondCaroНемчсчаспартЖидкPastКлейDessAhavGeorXVIIОдинанекСобоMakoSearClea
BrauLineАрмиPhilAdvaNintWindмесяStevFumiЕмцеXVIIШишкDigiCathМаркгосуКучедвижчитазавоFranМарь
WindBratXIIIWindWindWindAngeskirClanCarpМонтWindNearDreadiamЛаврИллювыпоVictGardPoulUndeпере
MultOlimMicrоникчиставтоабхаOratКузнАртиЛюдмJennMasaAudiAndrFreeудоскандPedrWarh10-1JeweБрум
ценаСимополоASC-свадЗориSidaViskRecoNintStepпласSandCM17РудипласIntrAVTOМедвABL01820томаBrea
1151осноMiniDornплатКитаBabyWindWindзапиКочеBoscBorkсертBritCartАрсеЛитРотстАстаЛитРХлебРузв
ЛитРЛитРМикуБыкоФормкнигУспефельИллюAcadучилЛогуКрутСотнOZONвмесМиллLatiSimoпостБатрAminврем
BuenМатвJoseБереавтоКолоNatuпознЛунгJeweEnglЕвфравтоувлеFrieКарпКудротставтоТегиLabVASC-ASC-
ASC-НекрGaetJohnЛеваРазмГрибТкачКремОбукГаврСтецTheotuchkasБондКали