SELECT a.id, a.name, b.oid, a.address, a.salary
FROM CUSTOMERS a
LEFT JOIN ORDERS b on a.age = b.age
WHERE a.id = '3'
我试图在数据帧的每一行上运行一个函数(在流式传输中)。此函数将包含scala代码和Spark数据帧api代码的组合。例如,我想从df中获取3个特征,并使用它们来过滤名为df2的第二个数据帧。我的理解是UDF无法实现这一目标。现在我的所有过滤代码都运行得很好,没有能力将它应用到df的每一行。
我的目标是能够做类似
的事情val df1 = Seq(("Brian", 29, "0-A-1234")).toDF("name", "age", "client-ID")
val df2 = Seq(("1234", 555-5555, "1234 anystreet")).toDF("office-ID", "BusinessNumber", "Address")
无法连接数据框,它们之间没有可连接的关系。
虽然我使用Scala,但Java或Python的答案可能会很好。
我也可以通过其他方式来实现这一目标。如果我可以将行中的数据提取到单独的变量中(请记住这是流式传输),那也很好。
答案 0 :(得分:1)
我的理解是UDF无法做到这一点。
这是正确的,但map
(local
Datasets
似乎也不例外Why does this Spark code make NullPointerException?)。像这样的嵌套逻辑只能用joins
表示:
如果Datasets
streaming
都是filter
则必须是等同物。这意味着即使:
无法连接数据框,它们之间没有可连接的关系。
你必须以某种方式推导出一个近似良好Dataset
条件的方式。
如果一个streaming
不是crossJoin
,您可以使用filter
后跟{{1}}来强制执行,但当然不建议这样做。