【问题标题】:HIVE partitioned by column becomes all 0 after inserting data from another table从另一个表插入数据后,按列分区的 HIVE 变为全 0
【发布时间】:2019-02-20 21:04:19
【问题描述】:

我正在使用 Hortonworks 在 HIVE 中创建分区表,并使用 HIVE 中的另一个表将数据插入其中。问题是,在我将数据插入到我创建的表中后,结果表中分区列 (passenger_count) 中的所有值都显示为 0,即使原始表中的值都不是 0。

以下是我创建分区表并向其中插入数据所采取的步骤:

  1. 运行以下查询以创建名为“date_partitioned”的表:

    create table date_partitioned
    (tpep_dropoff_datetime string, trip_distance double)
    partitioned by (passenger_count int);
    
  2. 运行以下查询以将数据从另一个现有表插入到“date_partitioned”表中:

    INSERT INTO TABLE date_partitioned
    PARTITION (passenger_count)
    SELECT tpep_dropoff_datetime, trip_distance, passenger_count
    FROM trips_raw;
    

“trips_raw”的列类型和示例值如下面的屏幕截图所示:

如您所见,'passenger_count' 列是 int 类型并且包含非零值。但是当我查看“date_partitioned”表的结果时,“passenger_count”列中的值都显示为 0。该表还创建了一个重复的“passenger_count”(因此它有 2 个“passenger_count”列,其中一个为空)。你可以从下面的截图中看到:

任何建议将不胜感激。我很好奇为什么原始列没有 0 时结果表中的 'passenger_count' 显示 0,以及为什么结果表中还有一个额外的 'passenger_count' 列。

【问题讨论】:

  • 事实证明,正如@justcode 在他的回答中提到的那样,源数据中确实有一些passenger_count 为0,并且它们恰好都显示在示例预览页面中。

标签: hadoop hive hdfs hortonworks-sandbox


【解决方案1】:

您确定为乘客计数加载的所有行都是 0 吗?你能在两张表上做一个 COUNT 和 GROUP BY 乘客计数吗?也许您只是对全零进行采样?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多