gpt4 book ai didi

hadoop - hive 与ARRAY/STRUCT一起玩

转载 作者:行者123 更新时间:2023-12-02 20:43:19 25 4
gpt4 key购买 nike

我正在为我的POC之一使用IMDB数据集。

数据可用here

样本数据之一像

nm0000006   Ingrid Bergman  1915    1982    actress,soundtrack,producer tt0038109,tt0071877,tt0034583,tt0038787
nm0000007 Humphrey Bogart 1899 1957 actor,soundtrack,producer tt0033870,tt0038355,tt0034583,tt0040897
nm0000008 Marlon Brando 1924 2004 actor,soundtrack,director tt0068646,tt0047296,tt0078346,tt0078788
nm0000009 Richard Burton 1925 1984 actor,producer,soundtrack tt0057877,tt0061184,tt0065207,tt0087803
nm0000010 James Cagney 1899 1986 actor,soundtrack,director tt0042041,tt0029870,tt0055256,tt0035575
nm0000011 Gary Cooper 1901 1961 actor,soundtrack,producer tt0044706,tt0049233,tt0033891,tt0027996

我创建的表是
Create external table casts( id STRING, name STRING, birthYear INT,deathYear INT, profession ARRAY<STRING>,titles ARRAY<STRING>) row format delimited fields terminated by '\t' lines terminated by '\n'  tblproperties ("skip.header.line.count"="1");

我想运行一个查询,例如谁是特定电影标题的 Actor (例如tt0057877)。

我也有另一个示例数据
 tconst averageRating   numVotes
tt0000001 5.8 1347
tt0000002 6.5 156
tt0000003 6.6 929
tt0000004 6.4 93
tt0000005 6.2 1613



I also want to run query like , show top 10 actors , who took part as an actor in the top rated movies.

有没有办法在 hive 中做上述事情(最好没有UDF)。

谢谢 !

最佳答案

首先,我认为create table语句在这种情况下不起作用。数组存储如下:[a,B,C]。

一种选择是创建这样的表:

Create external table casts( id STRING, name STRING, birthYear INT,deathYear INT, profession String,titles String) row format delimited fields terminated by '\t' lines terminated by '\n'  tblproperties ("skip.header.line.count"="1");

现在您可以使用侧面 View 爆炸功能:
select * from casts lateral view explode (split(profession,',')) tab2 as col2

这实际上将多值列爆炸成行。这使分析更加容易。

关于hadoop - hive 与ARRAY/STRUCT一起玩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48994049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com