【问题标题】:FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException while inserting data into Hive partitioned table失败:将数据插入 Hive 分区表时出现 SemanticException org.apache.hadoop.hive.ql.metadata.HiveException
【发布时间】:2015-01-09 06:07:51
【问题描述】:

我有一个包含 3 个部门 A、B、C 的员工数据。 我正在尝试在 departments 上创建分区表。 我使用以下命令创建了表格。

创建外部表 Parti_Trail (EmployeeID Int,FirstName String,Designation String,Salary Int) PARTITIONED BY (Department) 字符串)行格式分隔字段以“,”位置终止 '/user/sree/HiveTrail';

但这并没有在我的表中加载位置“/user/sree/HiveTrail”中的数据

所以我尝试加载我的表

LOAD DATA INPATH '/user/aibladmin/HiveTrail' OVERWRITE INTO TABLE Parti_SCDTrail PARTITION(department); 

但显示

FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: department not found in table's partition spec: {department=null}
  1. 为什么会这样。我做错什么了吗?
  2. 如果我们SET hive.exec.dynamic.partition.mode = nonstrict; 会发生什么
  3. 在创建分区表时,我们需要将数据分开保存在不同的文件夹中,还是自动将数据分开到不同的分区中

【问题讨论】:

    标签: hadoop mapreduce hive


    【解决方案1】:

    对于在 Hive 中具有分区的外部表,您需要运行 ALTER 语句来更新 Metastore 以获取新分区。因为外部表不由 Hive 管理。

    检查这个link

    希望对你有帮助...!!!

    【讨论】:

    • 我们应该将数据分离到单独的文件中并加载它们吗?
    • 1.) LOAD DATA INPATH '/should/be/data/file/full/path>'... 2.) 是的,对于每个分区,您应该将数据放在单独的文件中并且在加载时您需要提及您正在加载数据的分区。
    • 这将是一项额外的任务。如果我们需要加载 GB 文件或其他内容会发生什么。
    • 这是一个好方法吗?首先创建一个非分区表,然后查询数据并加载到分区表中-blog.safaribooksonline.com/2012/12/03/…
    • 不需要创建额外的表,只需按照上面链接给出的步骤。在加载分区表中的数据时,您需要提及分区值。就是这样。
    猜你喜欢
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 2023-04-02
    • 2020-01-13
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多