gpt4 book ai didi

hadoop - Sqoop导入-源表架构更改

转载 作者:行者123 更新时间:2023-12-02 19:49:42 25 4
gpt4 key购买 nike

假设在任何关系数据库中都有一个名为T1的表,其中包含100多个列。我将此表导入为CSV到HDFS中。

现在,将另外10列添加到表T1中。如果我将此数据导入HDFS,则新数据将比以前多10列。

问题:

  • sqoop如何排序要导入的列,以便新旧数据(至少对于T1更改之前的列而言)在正确的位置?
  • 对于新列,这些列是否总是总是在末尾导入?
  • 如果删除列怎么办?如何处理这种情况,即旧数据和新数据如何保留位置?
  • 最佳答案

    How does sqoop order the columns being imported, so that the old and the new data (at least for the columns before the change in T1) are at the right positions?



    在将数据写入HDFS时,所有基于Hadoop的工具都不会强制执行架构。默认情况下,它不会尝试使用新字段更新旧数据。 Sqoop不知道HDFS中的数据列。对于新数据,这完全取决于您如何编写sqoop import命令。如果您将 --table子句与 --columns子句一起使用,则数据将按照源上的顺序进行。如果发出 --query子句以提供用于获取数据的自定义查询,则该顺序将基于查询中select子句的列顺序。如果您不想在sqoop导入中明确提及列名,则可以考虑在源数据库上创建 View 。

    With new columns, do these columns always get imported at the end?



    不一定像我之前解释的那样

    What if a column gets deleted? How to handle this situation i.e. how does the old data and the new data retain the positions?



    如果删除了列,则很有可能您必须根据某些规则在处理时重新加载数据或处理数据。更好的方法是重新加载数据或在源数据库上创建 View 。

    这些不是sqoop it自身的局限性,它们是标准问题,无论您使用什么技术,都需要自定义解决方案。问题过于笼统,因此获取API可能不可行。

    关于hadoop - Sqoop导入-源表架构更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34601415/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com