因此,我开始学习如何使用配置单元,但在查询我从数据库中创建的表时遇到了问题https://github.com/cssegisanddata/covid-19/tree/master/csse_covid_19_data/csse_covid_19_daily_reports
在我根据5个最新的.csv文件制作表格之后,我试图找到:1)10个不同的国家中回收率最高的国家2)每个国家在哪一天的回收率最高,3)是否有任何国家的回收率高于现行案例。
我试过几种不同的方法,但我得到的最好的是10个国家的名单,其中有3或4个国家。
因此,与其像英国,英国,英国,巴西,俄罗斯这样的东西。。。
我要英国,巴西,俄罗斯,美国。。。
我试过按顺序、按分组、按不同的顺序,但总是出现错误/没有得到想要的结果。我不确定这是否有什么不同,但我一直在使用hadoop创建一个.sql文件,其中包含一个如下所示的查询。我会用Hive-f来运行它。 SELECT COUNTRY FROM COVID_19 ORDER BY COVID_19.CONFIRMED DESC LIMIT 10;
编辑-表格是这样创建的:
CREATE EXTERNAL TABLE COVID_19(
`FIPS` bigint,
`admin2` string,
`province` string,
`country` string,
`last_update` string,
`lat` double,
`long_` double,
`confirmed` bigint,
`deaths` bigint,
`recovered` bigint,
`active` bigint,
`combined_key` string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
* s3 bucket containing the csv files*
如前所述,链接中的数据用于生成表。最新的5个csv文件。
2条答案
按热度按时间nwnhqdif1#
所以我设法找到了我想要的结果,谢谢gmb提醒我max是个东西!
问题1)
问题2)
我想我已经把事情复杂化了。。。
6ss1mwsb2#
至于问题1),你似乎是在寻求妥协。这就给出了排名前10位的国家
confirmed
:请注意,一次发布多个问题并不是一个好的做法。然而,对于问题2,这里有一种方法。其思想是使用相关子查询过滤数据集:
以上假设
confirmed
以及recovered
每天统计病例。另一方面,如果它们总是表示递增的值,那么方法就不同了。对于问题1,我们需要使用
max()
而不是sum()
:对于问题2,它有点复杂。基本上,我们需要
lag()
得到前一天的价值。然后我们可以用row_number()
或者rank()
要按回收率的差异对记录进行排序,并按国家/地区筛选顶部记录,请执行以下操作: