我必须在 hive
中对表进行分区有一列也是表格的一部分。
例如:
表:员工
栏目:员工 ID、员工姓名、员工薪水
我必须使用employeeSalary 对表进行分区。
所以我写了以下查询:
CREATE TABLE employee (employeeId INT, employeeName STRING, employeeSalary INT) PARTITIONED BY (ds INT);
我只是在这里使用了名称“ds”,因为它不允许我输入相同的名称
employeeSalary
.这是我正在做的吗?此外,在将值插入表中时,我必须使用逗号分隔的文件。现在文件由如下行组成:
2019,约翰,2000
作为一排。
如果我必须使用工资进行分区,我的第一个分区将是工资为 2000 的所有人。所以查询将是
LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE employee PARTITION (ds=2000);
再次在工资为 2000 的 100 个条目之后,我有接下来的 500 个条目的工资为 4000。
所以我会再次触发查询:
LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE employee PARTITION (ds=4000);
请让我知道我是否正确......
最佳答案
以下是如何在您指定的列上创建一个带有分区的 hive 表
CREATE TABLE employee (employeeId INT, employeeName STRING) PARTITIONED BY (employeeSalary INT);
分区列在
PARTITIONED BY
中指定部分。在 Hive shell 中,您可以运行
describe employee;
它将显示表中的所有列。与您的 CREATE TABLE
您应该看到 4 列,而不是您想要获得的 3 列。对于您的加载命令,您需要指定要写入的所有分区。 (我对这些不是很熟悉,主要基于 http://wiki.apache.org/hadoop/Hive/LanguageManual/DML#Syntax
所以像
LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE employee PARTITION (employeeSalary=2000, employeeSalary=4000);
关于hive - 配置单元中的分区列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316960/