【问题标题】:Spark SQL get lineage of parent tablesSpark SQL 获取父表的沿袭
【发布时间】:2021-05-31 21:02:25
【问题描述】:

我通过从案例类加载创建了 3 个临时表。让我们称之为

  • ABC
  • BCD
  • EFG

然后我继续通过执行连接来创建另外 3 个表。

  • ABC 加入 BCD 得到 XYZ
  • XYZEFG 连接,这将提供 LMN
  • LMNABC 结合,得到 PQR

spark 是否允许我以某种方式查看相关注册临时表的沿袭?我如何提取它知道 LMN 取决于 XYZ 和 PQR 取决于 LMN 的信息,并以编程方式使用它来构建沿袭树(没有所有计划信息)。 等:

 |-PQR
    |-LMN
        |-XYZ
           |- ABC
        |-EFG
    |-ABC

谢谢。

【问题讨论】:

  • 你的意思是像DataFrame.explain这样的东西吗?
  • 我试过dataframe.explain,没有显示血统表
  • 你用过extended=true吗?
  • 是的,它适用于扩展。但是,我希望能够以编程方式使用这些信息,而不仅仅是打印它。我将更新问题以具体化。
  • 那么你前面有很多编码 :) 我可能是错的,但据我所知,如果不修改 DataFrame 代码并从头开始重建 Spark,这是不可能的。

标签: apache-spark apache-spark-sql


【解决方案1】:

有一个开源工具可以用来可视化血统:https://github.com/AbsaOSS/spline

它在运行时收集谱系并将其捕获以显示为图表。

【讨论】:

    【解决方案2】:

    让我们以这个 SQL 为例,它准确地创建了您提到的表/视图。

    CREATE TABLE ABC(abc_column1 int, abc_column2 string);
    CREATE TABLE BCD(bcd_column1 int, bcd_column2 string);
    CREATE TABLE EFG(efg_column1 int, efg_column2 string);
    
    create view XYZ(xyz_column1,xyz_column2) 
    as select abc.abc_column1, bcd.bcd_column2
    from abc 
    left join bcd on abc.abc_column1 = bcd.bcd_column1;
      
    create view LMN (lmn_column1,lmn_column2)
    as select xyz.xyz_column1, efg.efg_column2
    from xyz 
    left join efg on xyz.xyz_column1 = efg.efg_column1;
    
    create view PQR (pqr_column1, pqr_column2)
    as select lmn.lmn_column1, abc.abc_column2
    from LMN 
    left join ABC on abc.abc_column1 = lmn.lmn_column1;
    

    这是您要询问的数据沿袭:

    您可以在此处尝试自己的 SQL 来获取数据沿袭: https://sqlflow.gudusoft.com/#/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多