Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何创建基于多个字段链接行的ID_Apache Spark_Apache Spark Sql_Pyspark Sql - Fatal编程技术网

Apache spark 如何创建基于多个字段链接行的ID

Apache spark 如何创建基于多个字段链接行的ID,apache-spark,apache-spark-sql,pyspark-sql,Apache Spark,Apache Spark Sql,Pyspark Sql,我需要根据其他两个字段中的信息创建组ID。具有相同值的所有ID_1必须具有唯一的组ID,同样,具有相同值的所有ID_2必须具有唯一的组ID。组ID不必是连续的 ID_1 ID_2 GROUP_ID X1 10 1 X1 20 1 Y1 30 2 Y2 30 2 A1 100 3 A1 200 3 B1 200 3 B1

我需要根据其他两个字段中的信息创建组ID。具有相同值的所有ID_1必须具有唯一的组ID,同样,具有相同值的所有ID_2必须具有唯一的组ID。组ID不必是连续的

ID_1    ID_2    GROUP_ID  
X1      10      1  
X1      20      1  
Y1      30      2  
Y2      30      2  
A1      100     3  
A1      200     3  
B1      200     3  
B1      200     3  
B1      300     3  
B1      300     3  
C1      300     3  
C1      400     3  
我正在使用pyspark,并尝试使用窗口函数(见下文)在Spark SQL中求解,但无法生成所需的输出。请让我知道是否有一个有效的方法来解决这个问题。我的数据集的行数超过100万行

RowNum  ID_1    ID_2    ID_1_1  ID_2_1  GROUP_ID
1       X1      10      1       1       1
2       X1      20      1       1       1
3       Y1      30      3       3       3
4       Y2      30      4       3       3
5       A1      100     5       5       5
6       A1      200     5       5       5
7       B1      200     7       5       5
8       B1      200     7       5       5
9       B1      300     7       7       5
10      B1      300     7       7       5
11      C1      300     11      7       7
12      C1      400     11      11      7

Where
ID_1_1 = First(ROWNUM) over (Partition by ID_1 order by RowNum)
ID_2_1 = First(ID_1_1) over (Partition by ID_2 order by ID_1_1)
Group_ID = First(ID_2_1) over (Partition by ID_1_1 order by ID_2_1)

Using above approach, Rows 11 and 12 gets a group ID of 7 instead of 5. 

为什么第11行和第12行应该有5个作为组ID?因为否则,ID_2中的所有300个和ID_1中的C1不会有相同的组ID。您应该查找连接组件算法。我不确定是否有一个简单的sql查询来实现这一点。