【问题标题】:Sqoop : Truncate SQL Server table before exporting data from HadoopSqoop:在从 Hadoop 导出数据之前截断 SQL Server 表
【发布时间】:2018-05-15 16:20:42
【问题描述】:

我们正在使用 Sqoop 将数据从配置单元导出到 SQL Server。新数据始终附加到 SQL Server 中的现有数据。

是否可以在开始导出之前通过 Sqoop 截断 SQL Server 表?

【问题讨论】:

  • 我也有同样的问题!
  • 我对 Squoop 一无所知,但它似乎是一个命令行工具,所以您大概可以将它包装在一个脚本中,该脚本连接到 SQL Server 并在导入运行之前截断表?

标签: sql-server hadoop sqoop


【解决方案1】:

您可以使用sqoop eval 对数据库执行任意SQL。这将允许您在不“离开” Sqoop 的情况下截断表格。例如:

sqoop eval --connect 'jdbc:sqlserver://1.1.1.1;database=SomeDatabase;username=someUser;password=somePassword' --query "TRUNCATE TABLE some_table"

sqoop export --connect 'jdbc:sqlserver://1.1.1.1;database=SomeDatabase;username=someUser;password=somePassword' --export-dir /path/to/someTable/on/HDFS --table some_table --fields-terminated-by \001

--fields-terminated-by \001 假定 Hive 表使用默认分隔符。

【讨论】:

    【解决方案2】:

    Sqoop 不是通用查询工具,“eval”功能仅用于评估目的,不应在生产模式下使用。您始终可以将简单的 java 代码放在一起,以最适合您的用例的方式完成。

    【讨论】:

    • 您需要做一些额外的工作才能使其原子化。假设您不想截断表,然后发现您的 sqoop 导出由于某种原因而失败,并且您只剩下一个空表。
    【解决方案3】:

    有实现 sqoop --truncate 选项的功能请求 https://issues.apache.org/jira/browse/SQOOP-1313

    如果您有兴趣,请在该 JIRA 页面上投票。

    【讨论】:

      猜你喜欢
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多