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
Apache spark 如何将包含嵌套元素的列从其他列(withColumn)添加到数据框_Apache Spark_Pyspark_Pyspark Sql - Fatal编程技术网

Apache spark 如何将包含嵌套元素的列从其他列(withColumn)添加到数据框

Apache spark 如何将包含嵌套元素的列从其他列(withColumn)添加到数据框,apache-spark,pyspark,pyspark-sql,Apache Spark,Pyspark,Pyspark Sql,我有一个PySpark数据框,看起来像 C C1 C2 C3 1 2 3 4 我想添加另一个嵌套列,这将使数据帧的列成为json或对象,我甚至不确定这是什么。它将从同一行的其他列获取信息 C C1 C2 C3 V 1 2 3 4 {"C:1", "C1:2", "C2:3", "C3:4"} 我已经试过了,但我不知道PySpark中的正确语法是什么,与这个问题相反,这个问题是Scala,而且这个解决方案看起来只适用于1行,我需要对数亿行执行此操作 我尝试过将df2=df.wit

我有一个PySpark数据框,看起来像

C C1 C2 C3
1 2  3  4
我想添加另一个嵌套列,这将使数据帧的列成为json或对象,我甚至不确定这是什么。它将从同一行的其他列获取信息

C C1 C2 C3  V
1 2  3  4   {"C:1", "C1:2", "C2:3", "C3:4"}
我已经试过了,但我不知道PySpark中的正确语法是什么,与这个问题相反,这个问题是Scala,而且这个解决方案看起来只适用于1行,我需要对数亿行执行此操作

我尝试过将df2=df.withColumnV,structV.*,colC1.as'C1'作为一个神秘的语法错误

编辑:我不会说这个问题是重复的,因为解决我问题的用户在这里发布的解决方案没有发布在那里


如何从同一行中的其余列生成嵌套列V?

在PySpark中,可以使用struct实现。你不需要别名

df.withColumn("V", struct(col("C"), col("C1"), col("C2"), col("C3"))
如果不想硬编码列名,也可以这样做

df.withColumn("V", struct(col("*"))

as是Python中的一个关键字。使用别名-colC1。别名“C1”就是你要找的吗?@pault这不是重复的,因为该页面上的解决方案不是我想要的,用户sailesh解决了我的问题。他的解决方案没有出现在那一页上。此外,我还消除了具有空值的行。空值在这里并不重要。使用此方法然后转换为JSON将无法正确处理空值。