将数据插入Greenplum Physical表

时间:2016-08-10 06:09:24

标签: hadoop hive greenplum

我正在尝试将Greenplum外部表中的数据插入到物理(或普通表)表中。外部表指向一个大约1.32亿个数据的配置单元文件。但是,当我的外部表只显示6600万的数量时。因此,当插入物理表时,我只插入了6600条记录。为什么会这样?我的外部表的表属性有什么关系吗?如果是这样的话?

3 个答案:

答案 0 :(得分:1)

通过hive计算时,您会看到6600条记录。假设你刚刚做了一个count(*),应该足够直截了当。

现在你对此并不满意,因为你拥有1.32亿个“数据”,恰好是两倍的数据。

我不担心任何只允许你加载前6600万条记录的设置,所以让我们看看可能的嫌疑人。

  1. 两个'数据'(行?)对应一条记录。
  2. 数据中有一些奇怪的东西,当你把它作为一个表来评估时,你会错过一半的记录。 (也许在6600万行之后休息,也许是奇怪的行结尾)
  3. 您实际上没有加载所有输入文件
  4. 仔细检查应该指出你真正的罪魁祸首。如果你不知道从哪里开始:

    1. 查看文件中的第一行和最后几行,并将其全部内容与表格中的第一行和最后几行进行比较
    2. 检查每个输入文件中的行是否在输出中表示
    3. 如果您确定缺少某些数据,请尝试说明输入文件中的哪一行应该丢失,并查看是否可以在表格中找到它。

答案 1 :(得分:0)

您的hive表是否已分区

答案 2 :(得分:0)

最后!这个问题似乎已得到解决。我继续研究这个问题,问题似乎是w.r.t数据冗余。 (正如丹尼斯在之前的回答中所建议的那样)。该表具有重复值(在所有列上重复)。每条记录都有另外一组11个重复记录(虽然在我的情况下是可以接受的)。为了避免冗余,我添加了一个可以充当主键的列(自动生成的代理键)。现在,当我尝试从外部表加载greenplum物理表时,我可以看到插入的所有1.32亿条记录没有任何问题。

然而,尽管我的问题已经解决,但为了进行更深入的分析,问题仍然是关于阈值(6600万条记录)。将在此发布一个新问题。