将sql查询转换为spark转换

时间:2018-05-18 13:16:33

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

我想将我的数据转换为我的程序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' );

如何使其适用于两个数据集:

数据集ds_evenement:包含 evenement 记录

数据集ds_record_status:包含 record_status 记录

1 个答案:

答案 0 :(得分:0)

您可以选择最大日期,交叉加入和过滤:

// 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
  • 删除架构前缀。