apache-spark - 如何使用pyspark从一个月的某一天获取工作日

标签 apache-spark pyspark dayofweek

我有一个数据框 log_df:
enter image description here

我根据以下代码生成一个新的数据框:

from pyspark.sql.functions import split, regexp_extract 
split_log_df = log_df.select(regexp_extract('value', r'^([^\s]+\s)', 1).alias('host'),
                          regexp_extract('value', r'^.*\[(\d\d/\w{3}/\d{4}:\d{2}:\d{2}:\d{2} -\d{4})]', 1).alias('timestamp'),
                          regexp_extract('value', r'^.*"\w+\s+([^\s]+)\s+HTTP.*"', 1).alias('path'),
                          regexp_extract('value', r'^.*"\s+([^\s]+)', 1).cast('integer').alias('status'),
                          regexp_extract('value', r'^.*\s+(\d+)$', 1).cast('integer').alias('content_size'))
split_log_df.show(10, truncate=False)

新的数据框是这样的:
enter image description here

我需要另一列显示星期几,创建它的最佳优雅方式是什么?理想情况下,只需在选择中添加一个类似 udf 的字段。

非常感谢。

更新:我的问题与评论中的问题不同,我需要的是根据 log_df 中的字符串进行计算,而不是像评论那样基于时间戳,所以这不是一个重复的问题。谢谢。

最佳答案

我建议有点不同的方法

from pyspark.sql.functions import date_format
df.select('capturetime', date_format('capturetime', 'u').alias('dow_number'), date_format('capturetime', 'E').alias('dow_string'))
df3.show()

它给 ...
+--------------------+----------+----------+
|         capturetime|dow_number|dow_string|
+--------------------+----------+----------+
|2017-06-05 10:05:...|         1|       Mon|
|2017-06-05 10:05:...|         1|       Mon|
|2017-06-05 10:05:...|         1|       Mon|
|2017-06-05 10:05:...|         1|       Mon|
|2017-06-05 10:05:...|         1|       Mon|
|2017-06-05 10:05:...|         1|       Mon|
|2017-06-05 10:05:...|         1|       Mon|
|2017-06-05 10:05:...|         1|       Mon|

关于apache-spark - 如何使用pyspark从一个月的某一天获取工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38928919/

相关文章:

apache-spark - 在 SPARK 中,为什么 Narrow Dependency 严格不需要 schuffle over the network?

python - PySpark:获取数据框中每列的第一个非空值

python - Java 网关进程在向驱动程序发送其端口号之前退出

c# - 初始化 C# DayOfWeek 枚举

java - 日历:当前的 DAY_OF_WEEK 是本地化的

apache-spark - 如何在 pyspark 中使用外部(自定义)包?

scala - 从 RDD 中随机获取一个元素

python - 如何在没有通用 key 的情况下在Apache Spark中合并两个数据帧?

apache-spark - PySpark 1.6.2 | orderBy/sort 之后的collect()

java - 如何从 hsqldb 中的日期检索当前日期和 day_of_month 以列出即将到来的生日