如何在sql like partition上通过条件连接两个Pyspark数据帧?我实际上需要连接两个数据框,以便对于每个组(基于一个列变量),我与另一个表外部连接。
例如,我有以下两个数据帧:
DF1:
df2:
所需输出如下:
我尝试过使用Pyspark的< code>Window操作符,但是没有成功,因为它不能用于连接一个窗口。
任何帮助将不胜感激。
我更愿意说,根据您的输出期望,任何类型的连接都缺少一个逻辑。
但是,看看< code > cross join ,它可能与您的期望密切相关。
>>> df_1.crossJoin(df_2).withColumn("match", when((df_1.batch==df_2.batch) & (df_1.subject==df_2.subject) , "Yes").otherwise("No")).show()
+-------+-----+---------+-----+---------+-----+
|exam_id|batch| subject|batch| subject|match|
+-------+-----+---------+-----+---------+-----+
| 1| X1| maths| X1| maths| Yes|
| 1| X1| maths| X1| english| No|
| 1| X1| maths| X1|chemistry| No|
| 1| X1| english| X1| maths| No|
| 1| X1| english| X1| english| Yes|
| 1| X1| english| X1|chemistry| No|
| 2| X1|chemistry| X1| maths| No|
| 2| X1|chemistry| X1| english| No|
| 2| X1|chemistry| X1|chemistry| Yes|
+-------+-----+---------+-----+---------+-----+
我正在尝试在PySpark中为两个数据框(df1和df2)创建自定义连接(类似于此),代码如下所示: 我得到的错误消息是: 有没有办法编写一个可以处理来自两个单独数据帧的列的 PySpark UDF?
我在分区后的查询上有一个性能问题。 我每天有一个大约3000万行20列的拼花文件。例如,文件data\u 20210721。拼花地板看起来像: 我们有一个代码来处理它,以便只有一天,并缩短午夜,这样我们就可以: 第2行可以称为残差,因为它与文件不在同一天。 然后,我们希望每天生成1个拼花地板,因此默认的解决方案是处理每个文件并使用以下内容保存数据框: 模式设置为追加,因为第二天,我们可能会有过去/
我有两个具有大量(几百万到几千万)行的数据帧。我想为他们牵线搭桥。 在我目前使用的BI系统中,您可以通过首先对特定键进行分区,然后在该键上进行连接来快速完成此操作。 这是我在Spark中需要遵循的模式吗,或者这并不重要?乍一看,在分区之间转移数据似乎浪费了很多时间,因为没有正确地进行预分区。 如果有必要,我该怎么做?
我需要使用 spark-sql 加载一个 Hive 表,然后对其运行一些机器学习算法。我是这样写的: 它工作得很好,但如果我想增加数据集数据帧的分区数,我该怎么做?使用普通RDD,我可以写: 我想要有N个分区。 谢谢
步骤3我通过for循环加载每个分区,执行聚合,并以追加模式将其保存为文件夹,这样我就有9个模块作为文件夹:、等。它们不按模块分区,只是保存为文件夹。由于我的默认spark numpartitions是,每个模块文件夹都有文件,因此总共有文件 步骤4到目前为止还不错,但是我需要按把它分区回来。因此,我循环遍历每个分区,并将文件保存为一个没有任何分区的parquet文件。这导致总共有文件。我不知道这是
问题内容: 我正在尝试使用Criteria和ProjectionList来获取报告,并且通过hibernate使用它还很新。所以我有这个模型: 我使用以下命令构建查询: 基本上,此方法会收到一个Category和一个userId来过滤付款记录和一个期间,这些人将指示从现在到现在我要累加多少个月。如何获得按月分组的总和结果? 任何帮助或提示,我将不胜感激! 问题答案: 我找到了答案,而且非常简单。我