Apache spark 向spark数据帧中的现有结构添加元素
我有一个pyspark数据框架,模式如下所示Apache spark 向spark数据帧中的现有结构添加元素,apache-spark,pyspark,spark-dataframe,apache-spark-dataset,Apache Spark,Pyspark,Spark Dataframe,Apache Spark Dataset,我有一个pyspark数据框架,模式如下所示 root |-- useragent: string (nullable = true) |-- properties: struct (nullable = true) | |-- browser: string (nullable = true) | |-- device: string (nullable = true) 我正在使用udf+with列从useragent中提取更多信息。但我只能在新列中存储我正在创建的任何附加属性。
root
|-- useragent: string (nullable = true)
|-- properties: struct (nullable = true)
| |-- browser: string (nullable = true)
| |-- device: string (nullable = true)
我正在使用udf+with列从useragent中提取更多信息。但我只能在新列中存储我正在创建的任何附加属性。有没有办法将其附加到结构本身
我已经更改了模式,但是它没有从已经存在的其他属性中传输我需要的所有数据
df = df.schema['properties'].dataType.add(StructField('type', StringType()))
将其转换为RDD是否更有意义?使用这段代码将不会获得任何数据,因为您没有选择任何数据。 在此操作中,您所做的只是访问
Schema
属性,以某种方式对其进行修改,并将其分配给变量df
(这不是您所期望的修改后的数据帧),而只是一个StructType对象(那里似乎有一些语法错误,请检查)
您应该做的是通过select
和适当的转换函数修改数据帧。您可以考虑创建一个具有所需结构的StructField
类型的新列,并使用withColumn
函数将其添加为新列