在Spark中实现联接

时间:2017-10-10 11:23:18

标签: apache-spark apache-spark-sql spark-dataframe

我正在开发一个到Spark的plSql转换。

  1. 在plSql脚本中有一个表:baseTable用5创建 列:a,b,c,d,e,f,g,h,i,j,k。下一步 脚本将数据插入到baseTable中,但只插入到 列:a,b,c,d

  2. 在脚本中有一个更新查询:update1,用于插入 数据进入列:e,f来自另一个表:table1通过执行     与baseTable一起加入。

  3. 以相同的方式列:g,h,i使用查询更新:update2 from table2和columns:j,k使用query:update3 from     表3

  4. 现在我在表格的所有列中都有数据:baseTable

    以下是我在spark代码中执行连接的方式:

    1. 使用cols:a,b,从plSql脚本为step1创建一个数据帧 c,d。将其命名为df1
    2. 为查询创建了另一个数据框:update1并使用df1加入它。 (使用的连接类型:left_join和df1在左侧)。     让我们说结果表名是:“res1”

    3. 为查询创建了一个数据框:update2并将其与res1连接在一起。 (使用的连接类型:left_join和res1在左侧)。         结果命名为“res2”

    4. 为查询创建了一个数据框:update3并将其与res2连接在一起。 (使用的连接类型:left_join和res2在左侧)。             结果被命名为“res3”
    5. res3.createOrReplaceTempView( “baseTable”)
    6. 我在spark中执行的连接给了我正确的数据,但这项工作需要花费大量时间才能完成。 从技术上讲,我从plSql脚本执行了相同的操作。如果我从脚本中遵循相同的方式,这是一个昂贵的连接吗? 如果有任何其他加入可以使它更快,任何人都可以让我知道。

0 个答案:

没有答案