我的问题是我在本地计算机上使用hadoop尝试了这个并使用AWS EC2进行检查,以下查询中没有返回记录。现在下面的脚本是正确的,我知道这是事实吗?
我的问题是在作业完成后我们在零件文件中看不到任何结果的原因
DROP TABLE IF EXISTS batting;
CREATE EXTERNAL TABLE IF NOT EXISTS batting(id STRING, year INT, team STRING,
league STRING, games INT, ab INT, runs INT, hits INT, doubles INT, triples
INT, homeruns INT, rbi INT, sb INT, cs INT, walks INT, strikeouts INT, ibb
INT, hbp INT, sh INT, sf INT, gidp INT) ROW FORMAT DELIMITED FIELDS
TERMINATED BY ',' LOCATION 's3://hive-test1/batting';
DROP TABLE IF EXISTS master;
CREATE EXTERNAL TABLE IF NOT EXISTS master(id STRING, byear INT, bmonth INT,
bday INT, bcountry STRING, bstate STRING, bcity STRING, dyear INT, dmonth
INT, dday INT, dcountry STRING, dstate STRING, dcity STRING, fname STRING,
lname STRING, name STRING, weight INT, height INT, bats STRING, throws
STRING, debut STRING, finalgame STRING, retro STRING, bbref STRING) ROW
FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION
's3://hive-test1/master';
INSERT OVERWRITE DIRECTORY 's3://hive-test1/output' SELECT n.fname,
n.lname, x.year, x.runs FROM master n JOIN (SELECT b.id as id, b.year as
year, b.runs as runs FROM batting b JOIN (SELECT year, max(runs) AS best FROM
batting GROUP BY year) o WHERE b.runs=o.best AND b.year=o.year) x ON
x.id=n.id ORDER BY x.runs DESC;
答案 0 :(得分:1)
当您使用Hive创建两个表时,您所做的只是创建名称,字段及其类型,位置等的定义。创建对数据没有任何作用。
根据您之前的类似问题,我认为您有一些CSV格式的现有HDFS文件,其中包含您要查询的数据,对吧?
在此之前,我建议您手动将记录插入到每个表中,例如INSERT INTO batting (id, year, team,league) VALUES ('1', 2016, 'Red Sox', 'AL Easr');
。然后,使用SELECT * FROM batting;
查询表格以确认您已记录其中包含一些值。
现在您需要解决下一个问题:如何将HDFS文件导入Hive表?如果安装了Hue,可以使用Hue执行此操作。如果没有,我建议您使用Google查找此问题的答案。
一般来说,您有三个问题需要解决:
每一步都是不同的一步。让它们一个接一个地工作,你将解决一个复杂的问题并将其分解为更容易理解的小问题。