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
Python 如何在pyspark中从数组中提取元素_Python_Apache Spark_Pyspark_Rdd - Fatal编程技术网

Python 如何在pyspark中从数组中提取元素

Python 如何在pyspark中从数组中提取元素,python,apache-spark,pyspark,rdd,Python,Apache Spark,Pyspark,Rdd,我有一个以下类型的数据框 col1|col2|col3|col4 xxxx|yyyy|zzzz|[1111],[2222] col1|col2|col3|col4|col5 xxxx|yyyy|zzzz|1111|2222 我希望我的输出是以下类型 col1|col2|col3|col4 xxxx|yyyy|zzzz|[1111],[2222] col1|col2|col3|col4|col5 xxxx|yyyy|zzzz|1111|2222 我的col4是一个数组,我想把它转换成一个单

我有一个以下类型的数据框

col1|col2|col3|col4
xxxx|yyyy|zzzz|[1111],[2222]
col1|col2|col3|col4|col5
xxxx|yyyy|zzzz|1111|2222
我希望我的输出是以下类型

col1|col2|col3|col4
xxxx|yyyy|zzzz|[1111],[2222]
col1|col2|col3|col4|col5
xxxx|yyyy|zzzz|1111|2222
我的col4是一个数组,我想把它转换成一个单独的列。需要做什么

我在flatmap中看到了很多答案,但它们增加了一行,我只想将元组放在另一列中,但放在同一行中

以下是我的实际模式:

root
 |-- PRIVATE_IP: string (nullable = true)
 |-- PRIVATE_PORT: integer (nullable = true)
 |-- DESTINATION_IP: string (nullable = true)
 |-- DESTINATION_PORT: integer (nullable = true)
 |-- collect_set(TIMESTAMP): array (nullable = true)
 |    |-- element: string (containsNull = true)
另外,请有人帮助我解释数据帧和RDD的创建示例数据:

from pyspark.sql import Row
x = [Row(col1="xx", col2="yy", col3="zz", col4=[123,234])]
rdd = sc.parallelize([Row(col1="xx", col2="yy", col3="zz", col4=[123,234])])
df = spark.createDataFrame(rdd)
df.show()
#+----+----+----+----------+
#|col1|col2|col3|      col4|
#+----+----+----+----------+
#|  xx|  yy|  zz|[123, 234]|
#+----+----+----+----------+
使用
getItem
从数组列中提取元素如下,在实际情况中,将
col4
替换为
collect\u set(TIMESTAMP)


您的数据帧的模式是什么?你能显示df.printSchema()吗?嗨,我用我的实际模式编辑了这个问题。数组列中的所有单元格都有相同数量的元素吗?总是2?如果另一行在数组中有三个元素呢?不,所有元素正好有两个元素。因为数组中的元素是开始日期和结束日期。如果您能帮助我,这也是我的实际要求@Lydia请格外小心,确保您知道在修改代码时正在做什么:您的编辑破坏了一个完美的答案,导致它抛出异常(将其还原为OP的原始版本)…你有没有办法将迭代推广到原始col4数组上?@Amesys你有没有尝试过分解列表理解?我有一个后续问题,删除链接,提前谢谢@精神病