我必须hive用一个列分隔表,这也是表的一部分.
例如:
表:员工
列: employeeId,employeeName,employeeSalary
我必须使用employeeSalary对表进行分区.所以我写下面的查询:
CREATE TABLE employee (employeeId INT, employeeName STRING, employeeSalary INT) PARTITIONED BY (ds INT);
Run Code Online (Sandbox Code Playgroud)
我刚刚在这里使用了名称"ds",因为它不允许我使用相同的名称employeeSalary.
这是正确的我在做什么?同时在表中插入值时,我必须使用逗号分隔文件.现在该文件包含如下行:2019,John,2000
作为一排.如果我必须使用薪水进行分区,我的第一个分区将是所有人的工资2000.所以查询将是
LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE employee PARTITION (ds=2000);
Run Code Online (Sandbox Code Playgroud)
在薪水为2000的100个条目之后,我接下来有500个条目,工资为4000.所以我会再次触发查询:
LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE employee PARTITION (ds=4000);
Run Code Online (Sandbox Code Playgroud)
请让我知道我是否正确......
我的数据在data/2011/01/13/0100 /文件中有HDFS,每个文件都包含分隔符中的数据,比如name,ip,url.
我想在Hive中创建一个表并从hdfs导入数据,表应该包含time,name,ip和url.
如何使用Hive导入这些?r数据应该采用其他格式,以便我也可以导入时间?
我在hadoop中有数据并使用分区(日期和小时)创建了一个外部表.表创建很好,但当我尝试查询数据时,我没有得到任何结果.
Hadoop文件路径 - > /test/dt=2012-01-30/hr=17/testdata*
创建语句 - >
CREATE EXTERNAL TABLE test(adate STRING,
remoteIp STRING,
url STRING,
type STRING,
ip STRING,
useragent STRING)
COMMENT 'This is the Test view table'
PARTITIONED BY(dt STRING, hr STRING)
ROW FORMAT SERDE 'com.test.serde.ValidRawDataSerDe'
STORED AS SEQUENCEFILE
LOCATION '/test';
Run Code Online (Sandbox Code Playgroud)
表创建消息 - >
OK
Time taken: 0.078 seconds
Run Code Online (Sandbox Code Playgroud)
当我使用选择查询我没有得到结果 - >
hive> select * from test;
OK
Time taken: 0.052 seconds
hive> select * from test where dt='2008-08-09' and hr='17';
OK
Run Code Online (Sandbox Code Playgroud)
我在这里遗漏了什么.请帮忙.