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 向spark数据帧中的现有结构添加元素_Apache Spark_Pyspark_Spark Dataframe_Apache Spark Dataset - Fatal编程技术网

Apache spark 向spark数据帧中的现有结构添加元素

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中提取更多信息。但我只能在新列中存储我正在创建的任何附加属性。

我有一个pyspark数据框架,模式如下所示

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
函数将其添加为新列