小编mur*_*ash的帖子

在 Pyspark 中,从包含字符串列表的列中获取最常见的字符串

使用包含列的数据框,列中的值是列表,

id    |   values
1     |   ['good','good','good','bad','bad','good','good']
2     |   ['bad','badd','good','bad',Null,'good','bad']
....
Run Code Online (Sandbox Code Playgroud)

如何获得列表中最常显示的字符串?预期输出:

id   | most_frequent
1    | 'good'
2    | 'bad'
....
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark

6
推荐指数
1
解决办法
935
查看次数

要列出的 Pyspark 数据框列

我正在尝试将数据框中的列值列表提取到列表中

+------+----------+------------+
|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      |
+------+----------+------------+
Run Code Online (Sandbox Code Playgroud)

输出应该是 sno_id ['123','234','512','111'] 然后我需要迭代列表以对每个列表值运行一些逻辑。我目前正在使用 HiveWarehouseSession 通过使用 hive.executeQuery(query) 从 hive 表中获取数据到 Dataframe

感谢你的帮助。

pyspark pyspark-dataframes

4
推荐指数
1
解决办法
1万
查看次数

pySpark - 在滚动窗口中获取最大值行

我有一个 pyspark 数据框,下面是示例行。我试图在 10 分钟内获得最大平均值。我正在尝试使用 Window 函数,但无法实现结果。

这是我的数据框,其中包含 30 分钟的随机数据。我希望输出 3 行,每 10 分钟输出 1 行。

+-------------------+---------+
|         event_time|avg_value|
+-------------------+---------+
|2019-12-29 00:01:00|      9.5|
|2019-12-29 00:02:00|      9.0|
|2019-12-29 00:04:00|      8.0|
|2019-12-29 00:06:00|     21.0|
|2019-12-29 00:08:00|      7.0|
|2019-12-29 00:11:00|      8.5|
|2019-12-29 00:12:00|     11.5|
|2019-12-29 00:14:00|      8.0|
|2019-12-29 00:16:00|     31.0|
|2019-12-29 00:18:00|      8.0|
|2019-12-29 00:21:00|      8.0|
|2019-12-29 00:22:00|     16.5|
|2019-12-29 00:24:00|      7.0|
|2019-12-29 00:26:00|     14.0|
|2019-12-29 00:28:00|      7.0|
+-------------------+---------+
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的代码

window_spec = Window.partitionBy('event_time').orderBy('event_time').rangeBetween(-60*10,0)
new_df = data.withColumn('rank', rank().over(window_spec))
new_df.show()
Run Code Online (Sandbox Code Playgroud)

但这段代码给了我以下错误:

pyspark.sql.utils.AnalysisException: 'Window Frame specifiedwindowframe(RangeFrame, …
Run Code Online (Sandbox Code Playgroud)

dataframe apache-spark pyspark

3
推荐指数
2
解决办法
1473
查看次数

使用pyspark从每行的数组中获取不同的计数

我正在使用 pyspark 数据帧从每行的数组中寻找不同的计数:输入:col1 [1,1,1] [3,4,5] [1,2,1,2]

output:
1
3
2  

I used below code but it is giving me the length of an array:
output:
3
3
4

please help me how do i achieve this using python pyspark dataframe.

slen = udf(lambda s: len(s), IntegerType())
count = Df.withColumn("Count", slen(df.col1))
count.show()

Thanks in advanced !
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql pyspark pyspark-dataframes

1
推荐指数
1
解决办法
1134
查看次数