Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
要列出的Pyspark dataframe列_Pyspark_Pyspark Dataframes - Fatal编程技术网

要列出的Pyspark dataframe列

要列出的Pyspark dataframe列,pyspark,pyspark-dataframes,Pyspark,Pyspark Dataframes,我试图将列值列表从数据帧提取到列表中 +------+----------+------------+ |sno_id|updt_dt |process_flag| +------+----------+------------+ | 123 |01-01-2020| Y | +------+----------+------------+ | 234 |01-01-2020| Y | +------+----------+------------+

我试图将列值列表从数据帧提取到列表中

+------+----------+------------+
|sno_id|updt_dt   |process_flag|
+------+----------+------------+
| 123  |01-01-2020|     Y      |
+------+----------+------------+
| 234  |01-01-2020|     Y      |
+------+----------+------------+
| 512  |01-01-2020|     Y      |
+------+----------+------------+
| 111  |01-01-2020|     Y      |
+------+----------+------------+
输出应该是sno_id['123'、'234'、'512'、'111'的列表 然后我需要迭代列表,对列表中的每个值运行一些逻辑。我目前正在使用HiveWarehouseSession,通过使用hive.executeQuery(查询)将数据从hive表提取到Dataframe中


感谢您的帮助。

这很容易,因为您可以先收集df,然后返回行类型列表

row_list = df.select('sno_id').collect()
然后可以迭代行类型,将列转换为列表

sno_id_array = [ row.sno_id for row in row_list]

sno_id_array 
['123','234','512','111']
使用平面图和更优化的解决方案

sno_id_array = df.select("sno_id ").rdd.flatMap(lambda x: x).collect()

您试图在列表值上运行什么逻辑?您是否使用进程标志或updt或两者进行分组?我得到了
AttributeError:“list”对象没有属性“collect”
,因此不要使用
sno\u id\u数组=[row.sno\u id表示row\u list中的行。collect()]
使用
sno\u id\u数组=[row.sno\u id表示row\u列表中的行]
为什么rdd flatmap更优化?如果您注意到在第一种方法中,我们收集数据帧,然后迭代每个值,而在第二种方法中,我们不需要这样做,而是直接迭代rdd