hive - 配置单元中的分区列

标签 hive

我必须在 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/

相关文章:

hadoop - Parquet 格式的 hive1.1 不支持日期数据类型?

hadoop - 在hadoop中找不到Hiveserver

hadoop - Hive、HDFS 数据到本地系统并返回

hadoop - Sqoop:如何从配置单元联合导出表

java - 使用 Java 将数据存储为 Apache Spark 中的 Hive 表

hadoop - 使用子查询连接 HIVE 中的两个表

sql - 我们如何替换配置单元变量的值以检查是否有任何错误

hadoop - 如何在将数据插入存储桶时合并由配置单元创建的小文件?

hadoop - 如何将用双引号括起来并用制表符分隔的 CSV 数据加载到 HIVE 表中?

hadoop - 更改表分区设置位置后的 Hive 错误