相关疑难解决方法(0)

根据指定黑名单标准的另一个DataFrame过滤Spark DataFrame

我有一个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)

有更清洁的解决方案吗?

dataframe apache-spark apache-spark-sql

24
推荐指数
2
解决办法
2万
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

dataframe ×1