【问题标题】:Translate of a sql query into spark transformation将 sql 查询转换为 spark 转换
【发布时间】:2018-10-28 22:45:15
【问题描述】:

我想将我的数据转换为我的程序 Spark-JAVA : 这是我的 sql 查询:

 SELECT ID AS Identifier, IFNULL(INTITULE,'') AS NAME_INTITULE, 
IFNULL(ID_CAT,'') AS CODE_CATEGORIE
FROM db_1.evenement
 where DATE_HIST > (select IFNULL(max(date_record),'0000-00-00 00:00:00') 
                   from db_2.record_status where db_destination_name='AB' );

如何使它与两个数据集一起工作:

Dataset ds_evenement : 包含 evenement 记录

数据集 ds_record_status : 包含 record_status 记录

【问题讨论】:

  • 你需要一个变量和 StringBuilder 类。

标签: apache-spark dataset apache-spark-sql apache-spark-dataset


【解决方案1】:

您可以选择最大日期、交叉连接和过滤器:

// Select max value from ds_record_status
ds_record_status.select(
    coalesce(max(col("date_record")), lit(0).cast("timestamp")).alias("max_date")
).crossJoin(ds_evenement).where("DATE_HIST > max_date)

或者只注册两个表:

 ds_record_status.createOrReplaceTempView("ds_record_status");
 ds_evenement.createOrReplaceTempView("ds_evenement");

并几乎按原样使用您的查询:

  • IFNULL 替换为coalesce
  • 删除架构前缀。

【讨论】:

  • 这两个表都有我不需要的其他列,结果很好地注册到一个表中。
  • 非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
  • 2019-06-08
  • 2020-02-13
  • 2014-08-14
  • 2015-10-10
  • 2015-05-08
相关资源
最近更新 更多