栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spark DataFrame TimestampType-如何从字段获取年,月,日值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spark DataFrame TimestampType-如何从字段获取年,月,日值?

从Spark 1.5开始,您可以使用许多日期处理功能:

  • pyspark.sql.functions.year
  • pyspark.sql.functions.month
  • pyspark.sql.functions.dayofmonth
  • pyspark.sql.functions.dayofweek()
  • pyspark.sql.functions.dayofyear
  • pyspark.sql.functions.weekofyear()

    import datetime
    from pyspark.sql.functions import year, month, dayofmonth

    elevDF = sc.parallelize([
    (datetime.datetime(1984, 1, 1, 0, 0), 1, 638.55),
    (datetime.datetime(1984, 1, 1, 0, 0), 2, 638.55),
    (datetime.datetime(1984, 1, 1, 0, 0), 3, 638.55),
    (datetime.datetime(1984, 1, 1, 0, 0), 4, 638.55),
    (datetime.datetime(1984, 1, 1, 0, 0), 5, 638.55)
    ]).toDF([“date”, “hour”, “value”])

    elevDF.select(
    year(“date”).alias(‘year’),
    month(“date”).alias(‘month’),
    dayofmonth(“date”).alias(‘day’)
    ).show()

    +----+-----+—+

    |year|month|day|

    +----+-----+—+

    |1984| 1| 1|

    |1984| 1| 1|

    |1984| 1| 1|

    |1984| 1| 1|

    |1984| 1| 1|

    +----+-----+—+


您可以将simple

map
与其他任何RDD一起使用:

elevDF = sqlContext.createDataframe(sc.parallelize([        Row(date=datetime.datetime(1984, 1, 1, 0, 0), hour=1, value=638.55),        Row(date=datetime.datetime(1984, 1, 1, 0, 0), hour=2, value=638.55),        Row(date=datetime.datetime(1984, 1, 1, 0, 0), hour=3, value=638.55),        Row(date=datetime.datetime(1984, 1, 1, 0, 0), hour=4, value=638.55),        Row(date=datetime.datetime(1984, 1, 1, 0, 0), hour=5, value=638.55)]))(elevDF .map(lambda (date, hour, value): (date.year, date.month, date.day)) .collect())

结果是:

[(1984, 1, 1), (1984, 1, 1), (1984, 1, 1), (1984, 1, 1), (1984, 1, 1)]

顺便说一句:

datetime.datetime
无论如何都存储一个小时,所以分开保存似乎浪费了内存。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650510.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号