我有一个largeDataFrame(多列和数十亿行)和一个smallDataFrame(单列和10,000行).
我想所有的行从过滤largeDataFrame每当some_identifier列在largeDataFrame比赛中的行之一smallDataFrame.
这是一个例子:
largeDataFrame
some_idenfitier,first_name
111,bob
123,phil
222,mary
456,sue
Run Code Online (Sandbox Code Playgroud)
smallDataFrame
some_identifier
123
456
Run Code Online (Sandbox Code Playgroud)
desiredOutput
111,bob
222,mary
Run Code Online (Sandbox Code Playgroud)
这是我丑陋的解决方案.
val smallDataFrame2 = smallDataFrame.withColumn("is_bad", lit("bad_row"))
val desiredOutput = largeDataFrame.join(broadcast(smallDataFrame2), Seq("some_identifier"), "left").filter($"is_bad".isNull).drop("is_bad")
Run Code Online (Sandbox Code Playgroud)
有更清洁的解决方案吗?