Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 从spark api中的字符串列(日期时间戳)中提取周天数_Pyspark_Pyspark Sql - Fatal编程技术网

Pyspark 从spark api中的字符串列(日期时间戳)中提取周天数

Pyspark 从spark api中的字符串列(日期时间戳)中提取周天数,pyspark,pyspark-sql,Pyspark,Pyspark Sql,我是Spark API的新手。我试图从列中提取工作日编号,例如col_date(具有日期时间戳,例如'13AUG15:09:40:15'),这是字符串,并添加另一列作为工作日(整数)。我不能成功地做这件事 这很简单 此简单函数生成所有作业,并以数字形式返回工作日(星期一=1): 有关日期时间处理的更多详细信息,请参阅。下面的方法对我很有效,使用了“一行”自定义项-与上面的方法类似但不同: from pyspark.sql import SparkSession, functions spar

我是Spark API的新手。我试图从列中提取工作日编号,例如col_date(具有日期时间戳,例如'13AUG15:09:40:15'),这是字符串,并添加另一列作为工作日(整数)。我不能成功地做这件事

这很简单

此简单函数生成所有作业,并以数字形式返回工作日(星期一=1):


有关日期时间处理的更多详细信息,请参阅。

下面的方法对我很有效,使用了“一行”自定义项-与上面的方法类似但不同:

from  pyspark.sql  import SparkSession, functions
spark = SparkSession.builder.appName('dayofweek').getOrCreate()
设置数据帧:

df = spark.createDataFrame(
    [(1, "2018-05-12")
     ,(2, "2018-05-13")
     ,(3, "2018-05-14")
      ,(4, "2018-05-15")
      ,(5, "2018-05-16")
      ,(6, "2018-05-17")
      ,(7, "2018-05-18")
      ,(8, "2018-05-19")
      ,(9, "2018-05-20")
    ], ("id", "date")) 
设置udf:

from pyspark.sql.functions import udf,desc
from datetime import datetime

weekDay =  udf(lambda x: datetime.strptime(x, '%Y-%m-%d').strftime('%w'))

df = df.withColumn('weekDay', weekDay(df['date'])).sort(desc("date"))
结果:

    df.show()

+---+----------+-------+
| id|      date|weekDay|
+---+----------+-------+
|  9|2018-05-20|      0|
|  8|2018-05-19|      6|
|  7|2018-05-18|      5|
|  6|2018-05-17|      4|
|  5|2018-05-16|      3|
|  4|2018-05-15|      2|
|  3|2018-05-14|      1|
|  2|2018-05-13|      0|
|  1|2018-05-12|      6|
+---+----------+-------+

您使用的是RDD还是数据帧可能存在重复?@nightingalen:我使用的是数据帧我忘记了重要的部分,.strftime('%w')生成了神奇的周数和返回数。我得到了一个attributeerror:'str'没有属性'map'。但是,我可以运行v=datetime.strtime(“%13AUG15:09:40:15”,“d%b%y:%H:%M:%S”).strftime(“%w”),它返回值4。谢谢你的时间!
    df.show()

+---+----------+-------+
| id|      date|weekDay|
+---+----------+-------+
|  9|2018-05-20|      0|
|  8|2018-05-19|      6|
|  7|2018-05-18|      5|
|  6|2018-05-17|      4|
|  5|2018-05-16|      3|
|  4|2018-05-15|      2|
|  3|2018-05-14|      1|
|  2|2018-05-13|      0|
|  1|2018-05-12|      6|
+---+----------+-------+