java—通过sparksql从配置单元中选择最新的数据分区

slsn1g29  于 2021-06-26  发布在  Hive
关注(0)|答案(3)|浏览(608)

我有一张 hive 的table ds 哪里 ds 是一根弦吗 2017-11-07 . 因为字符串是可比较的,所以我想通过sparksql从配置单元中选择最新的数据分区,所以我编写了以下代码:

Dataset<Row> ds = sparkSession.sql("select max(ds) from admin_zpw123_user_meta");

String s = ds.first().getString(0);

sparkSession.sql("select * from admin_zpw123_user_meta where ds="+s).show();

我可以打印字符串s,这是 2017-11-07 但是我没有从第三个语句中得到任何输出。我想知道为什么,有没有一个优雅的方式来做到这一点?

vmjh9lq9

vmjh9lq91#

spark中的操作非常低效,而您在以下方面的操作是无用的:

String s = ds.first().getString(0);

要解决此问题,只需执行以下操作即可过滤最新的分区日期:

sparkSession.sql("select * from admin_zpw123_user_meta where ds in (select max(distinct ds) from admin_zpw123_user_meta)").show();
mspsb9vt

mspsb9vt2#

你需要用单引号括起来 2017-11-07 在sql语句中使用它时的字符串。您可以将其添加到查询中,如下所示:

sparkSession.sql("select * from admin_zpw123_user_meta where ds='" + s + "'").show();
kupeojn6

kupeojn63#

我只是补充一句 ’’ 到了2017-11-07,一切都正常了,但还是没那么优雅

相关问题