0

我有一个pyspark数据框,模式如下所示。将元素添加到火花数据框中的现有结构中

root 
|-- useragent: string (nullable = true) 
|-- properties: struct (nullable = true) 
| |-- browser: string (nullable = true) 
| |-- device: string (nullable = true) 

我正在使用udf + withColumn从useragent中提取更多信息。但我只能在新的专栏中存储任何我正在创建的附加属性。有没有一种方法可以将它追加到结构本身?

我已经改变了模式,但它不转让所有我从其他属性所需的数据已经存在

df = df.schema['properties'].dataType.add(StructField('type', StringType())) 

难道更有意义,这转换为RDD?

回答

0

使用这段代码不会得到任何数据,因为您没有选择任何数据。 你在这个操作中所做的只不过是访问Schema属性,以某种方式修改它,并将它分配给一个变量df(这不是你所期待的修改的数据框),而只是一个StructType对象(似乎有一些语法错误,请检查)

你应该做的是通过select和合适的转换函数修改数据帧。您可以考虑创建具有所需结构的StructField类型的新列,并使用withColumn函数将其添加为新列函数

相关问题