Spark SQL 时间格式处理

初始化Spark Sql

Scala 复制代码
package pbcp_2023.clear_data

import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions.{current_date, current_timestamp}

object twe_2 {
  def main(args: Array[String]): Unit = {
//新建SparkConf
    val con = new SparkConf().setMaster("local[*]").setAppName("one")
  //设置权限
    System.setProperty("HADOOP_USER_NAME", "root")
//新建Spark Sql
    val sc = new SparkSession.Builder()
      .config(con)
      .enableHiveSupport()
      .getOrCreate()
   import sc.implicits._
    val list = List("date").toDF()


  }
  }

1.current_date和current_timestamp

current_date:取得当前日期

current_timestamp: 取得当期时间日期

Scala 复制代码
   import sc.implicits._
    val list = List("date").toDF()
//    current_date 当前日期
//    current_timestamp 当前时间日期
    list.withColumn("current_date(日期)",current_date())
    .withColumn("current_timestamp",current_timestamp())

2.获取各种时间格式

  1. current_timestamp(): 这个函数用于获取当前的日期和时间戳。
  2. year(col("local_date")): 这个函数会提取出"local_date"列中的年份。
  3. month(col("local_date")): 这个函数会提取出"local_date"列中的月份。
  4. quarter(col("local_date")): 这个函数会根据"local_date"列中的日期信息,将日期划分为哪个季度。
  5. weekofyear(col("local_date")): 这个函数会提取出"local_date"列中该年度的第几周。
  6. dayofmonth(col("local_date")): 这个函数会提取出"local_date"列中该月的第几天。
  7. dayofyear(col("local_date")): 这个函数会提取出"local_date"列中该年的第几天。
  8. hour(col("local_date")): 这个函数会提取出"local_date"列中的小时数。
  9. minute(col("local_date")): 这个函数会提取出"local_date"列中的分钟数。
  10. second(col("local_date")): 这个函数会提取出"local_date"列中的秒数。

3.时间格式之间的转换--from_unixtime 和 unix_timestamp

函数:

Scala 复制代码
list2.withColumn("new_date",from_unixtime(unix_timestamp("[要转换的列名]","[要转换的列的格式]"),"[要转换为的格式]").as("date") ).show()

1.from_unixtime 函数通常用于将Unix时间戳转换为日期和时间格式。它接受一个Unix时间戳作为输入,并返回一个表示特定日期和时间的字符串。

2.unix_timestamp函数通常用于将日期和时间转换为Unix时间戳。它接受一个日期和时间作为输入,并返回一个表示该日期和时间的Unix时间戳。

理解是先用unix_timestamp将指点格式转换为时间戳,再用from_unixtime将时间戳转换为你想要的时间格式!所以这两个一般是配合使用的

实例:

Scala 复制代码
    //加入题目要求将 yyyyMMdd 格式数据转换成 yyyy-MM-dd HH:mm:dd
    val list2 = List("20231125").toDF("date")  //初始化列
      list2.withColumn("new_date",from_unixtime(unix_timestamp(col("date"),"yyyyMMdd"),"yyyy-MM-dd HH:mm:ss").as("date") )
        .show()
相关推荐
一张假钞33 分钟前
Spark的基本概念
大数据·分布式·spark
一张假钞39 分钟前
Spark On Yarn External Shuffle Service
大数据·分布式·spark
LUCIAZZZ12 小时前
简单的SQL语句的快速复习
java·数据库·sql
Elastic 中国社区官方博客14 小时前
使用真实 Elasticsearch 进行高级集成测试
大数据·数据库·elasticsearch·搜索引擎·全文检索·jenkins·集成测试
一张假钞14 小时前
Spark SQL读写Hive Table部署
hive·sql·spark
好记性+烂笔头15 小时前
4 Spark Streaming
大数据·ajax·spark
Leven19952716 小时前
Flink (十三) :Table API 与 DataStream API 的转换 (一)
数据库·sql·flink
好记性+烂笔头18 小时前
3 Flink 运行架构
大数据·架构·flink
字节侠18 小时前
Flink2支持提交StreamGraph到Flink集群
大数据·flink·streamgraph·flink2·jobgraph
好记性+烂笔头1 天前
4 Hadoop 面试真题
大数据·hadoop·面试