【问题标题】:Spark SQL analog for Redshift (Oracle) "SYSDATE" or "CURRENT_DATE"Redshift (Oracle)“SYSDATE”或“CURRENT_DATE”的 Spark SQL 模拟
【发布时间】:2016-02-22 05:15:03
【问题描述】:

Spark SQL 中是否支持任何日期函数来获取当前日期?

【问题讨论】:

  • 您是否已经尝试过寻找答案?你还尝试过什么?除非 Spark SQL 的实现与 SQL 规范有很大不同,否则您应该能够SELECT NOW(); 获取当前时间戳。
  • current_date 似乎工作:databricks.com/blog/2015/09/16/…
  • 我已经尝试搜索和使用“NOW()”和“current_date”,但出现以下异常:线程“main”中的异常 org.apache.spark.sql.AnalysisException: undefined function NOW;线程“主”org.apache.spark.sql.AnalysisException 中的异常:无法解析给定输入列的“current_date”;

标签: java apache-spark-sql amazon-redshift


【解决方案1】:

我使用org.apache.spark.sql.hive.HiveContext 代替org.apache.spark.sql.SQLContext 找到了我的问题的解决方案。现在以下代码按预期工作:

lazy val sc = ... // create Spak Context
lazy val hc = new HiveContext(sc)
val results = hc.sql("SELECT record_name as name FROM test_table WHERE day < current_date")
results.take(10)
  .map(r => s"name: ${r.getAs("name")}")
  .foreach(println)

【讨论】:

    【解决方案2】:

    current_date() 在 Spark 1.5 上适用于我

    示例用法:

    sqlContext.sql("SELECT current_date() as today FROM eventsAvro").first
    

    输出:

    res360: org.apache.spark.sql.Row = [2016-01-29]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多