Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Scala 如何在spark数据框架中通过列获取配对,如python pandas?_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

Scala 如何在spark数据框架中通过列获取配对,如python pandas?

Scala 如何在spark数据框架中通过列获取配对,如python pandas?,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,你好~我是spark的新手。我想在dataframe中获得一个列的对,col中的每个项(“all_mv_id”)让其他项组成这样的对: # generate data ids = [('all_mv_id', ['131', '121', '2223', '123412', '3982', '54281'])] df = pd.DataFrame.from_items(ids) all_mv_id = list(df.all_mv_id) temp_container = [] for i i

你好~我是spark的新手。我想在dataframe中获得一个列的对,col中的每个项(“all_mv_id”)让其他项组成这样的对:

# generate data
ids = [('all_mv_id', ['131', '121', '2223', '123412', '3982', '54281'])]
df = pd.DataFrame.from_items(ids)

all_mv_id = list(df.all_mv_id)
temp_container = []
for i in range(len(all_mv_id)):
    for j in range(i+1,len(all_mv_id)):
        temp_container.append([all_mv_id[i],all_mv_id[j]])

df_1 = pd.DataFrame(temp_container)
df_1.columns = ["id_1", "id_2"]
之前:

+---------+
|all_mv_id|
+---------+
|      131|
|      121|
|     2223|
|   123412|
|     3982|
+---------+
之后:

+------+------+
|  id_1|  id_2|
+------+------+
|   131|   121|
|   131|  2223|
|   131|123412|
|   131|  3982|
|   131| 54281|
|   121|  2223|
|   121|123412|
|   121|  3982|
|   121| 54281|
|  2223|123412|
|  2223|  3982|
|  2223| 54281|
|123412|  3982|
|123412| 54281|
|  3982| 54281|
+------+------+
我的意思是,在python熊猫中,我会这样做:

# generate data
ids = [('all_mv_id', ['131', '121', '2223', '123412', '3982', '54281'])]
df = pd.DataFrame.from_items(ids)

all_mv_id = list(df.all_mv_id)
temp_container = []
for i in range(len(all_mv_id)):
    for j in range(i+1,len(all_mv_id)):
        temp_container.append([all_mv_id[i],all_mv_id[j]])

df_1 = pd.DataFrame(temp_container)
df_1.columns = ["id_1", "id_2"]
但是如何将pandas中的python转换为spark数据框架中的scala呢?
我尝试了
ListBuffer
,但似乎无法将其附加到元组中。

我想带条件
left.id
的常规自连接应该可以完成以下工作:

val df=List(“131”、“121”、“2223”、“123412”、“3982”).toDF(“id”)
df.as(“左”)
.join(df.as(“right”),$“left.id”<$“right.id”)
。选择($“left.id”作为“id_1”,$“right.id”作为“id_2”)
显示
结果:

+------+------+
|  id_1|  id_2|
+------+------+
|   131|  2223|
|   131|  3982|
|   131| 54281|
|   121|   131|
|   121|  2223|
|   121|123412|
|   121|  3982|
|   121| 54281|
|  2223|  3982|
|  2223| 54281|
|123412|   131|
|123412|  2223|
|123412|  3982|
|123412| 54281|
|  3982| 54281|
+------+------+

我想,条件为
left.id
的常规自连接应该可以完成以下工作:

val df=List(“131”、“121”、“2223”、“123412”、“3982”).toDF(“id”)
df.as(“左”)
.join(df.as(“right”),$“left.id”<$“right.id”)
。选择($“left.id”作为“id_1”,$“right.id”作为“id_2”)
显示
结果:

+------+------+
|  id_1|  id_2|
+------+------+
|   131|  2223|
|   131|  3982|
|   131| 54281|
|   121|   131|
|   121|  2223|
|   121|123412|
|   121|  3982|
|   121| 54281|
|  2223|  3982|
|  2223| 54281|
|123412|   131|
|123412|  2223|
|123412|  3982|
|123412| 54281|
|  3982| 54281|
+------+------+

非常感谢你~~我收到了~谢谢~@konverse如果你觉得这个网站很有帮助,你可以接受:)对不起~我试过了~但是系统显示“谢谢你的反馈!那些声誉低于15的人投的票会被记录下来,但不会改变公开显示的帖子分数。”o(╥﹏╥)o@konverse在“向上投票”按钮下方,有一个“勾选”按钮可以接受答案。如果你接受它,你还将获得两个声望点:)非常感谢~~我知道了~谢谢~@konverse如果你觉得这个答案很有帮助,你可以接受:)对不起~我尝试了~但系统显示“谢谢你的反馈!声誉低于15的人所投的票将被记录,但不会改变公开显示的帖子分数。”(╥﹏╥)o@konverse在“向上投票”按钮下方,有一个勾选按钮,用于接受答案。如果您接受,您还将获得两个信誉点:)