Spark:替换collect()[][]操作



我的代码为:

new_df=spark.sql("Select col1,col2 from table1 where id=2").collect()[0][0]

我尝试过LocalIterator((,但得到的消息是不可下标的。请建议一种更好的方法来替换collect(([0][0]。

IIUC-

假设这是测向的结果

+----+---+---------------+
|  id|num|       list_col|
+----+---+---------------+
|1001|  5|[1, 2, 3, 4, 5]|
|1002|  3|      [1, 2, 3]|
+----+---+---------------+

为了获得list_col的第一个值,请在现有代码中再使用一个[]

print(df.select("list_col").collect()[0][0][0])
will give you 1

同样,这将给你2

print(df.select("list_col").collect()[0][0][1])

根据新的理解更新我的答案-即从数据帧访问列表列的第一个元素

df = df.withColumn("list_element", F.col("list_col").getItem(0))
df.show()
+----+---+---------------+------------+
|  id|num|       list_col|list_element|
+----+---+---------------+------------+
|1001|  5|[1, 2, 3, 4, 5]|           1|
|1002|  3|      [1, 2, 3]|           1|
+----+---+---------------+------------+ 

最新更新