我的主要用例是执行从SAS到Spark-scala的代码迁移。这可能是一个错误或可能是我可能做错了什么,但是在使用Full outer join时,或者甚至使用A left outer join B union all B右外连接A和排除连接(其中a.col1为空)组合,(作为完全外连接条件的替代)在我的代码中,它在每种情况下返回不同的行数。输入数据集在SAS和Spark中具有相同的行数,并且输出总是具有比SAS对应的行更多的行。
这是我的示例代码,例如:
data1.registerTempTable("tblA")
data2.registerTempTable("tblB")
val query = """SELECT A.*,B.* FROM tblA A FULL OUTER JOIN tblB B
ON UCASE(trim(A.col1))=UCASE(trim(B.col1)) AND trim(A.col2)=trim(B.col2) AND
a.col3=LPAD(B.col3,6,'0') """
val result = sqlContext.sql(query)
result.count
其他信息:我甚至尝试过使用
Step1)左外连接B联合所有A右外连接B,然后 步骤2)在结果数据帧上使用.dropDuplicates(),
步骤1在多次迭代中给出相同的结果,而步骤1和2的组合再次给出不同的结果。
有人有什么想法吗?