【问题标题】:Is it possible to use SQOOP imported tables without the TRIM function?是否可以使用没有 TRIM 功能的 SQOOP 导入表?
【发布时间】:2017-10-18 15:35:52
【问题描述】:

我有一个 SQOOP 作业,可将数据直接从 Oracle 数据库加载到 Microsoft Azure HDInsights Hadoop 集群上的 Hive 架构。虽然,在导入基于 char 的字段(例如 varchar 变量)时,我发现这些字段是作为字符串导入的。这没有错,它对我来说很完美。但是,有一个小不便,那就是 Hive 数据库中的字符串字段占用了该字段的最大长度。这意味着每次我在该字段上执行条件时都使用 TRIM 函数。是否有任何 SQOOP 参数或解决方法允许我不使用 TRIM?

最好的问候

【问题讨论】:

    标签: hadoop hive trim azure-hdinsight sqoop


    【解决方案1】:

    您也可以使用 varchar 数据类型导入数据,以避免将其转换为字符串。您可以使用--map-column-hive 参数来实现这一点。此参数会覆盖已配置列的从 SQL 类型到 Hive 类型的默认映射。

    用法:

    sqoop import <generic args> --map-column-hive column_name=varchar(200)
    

    【讨论】:

    • 我已经对此进行了研究,但是在导入具有 +- 200 个表的数据库时,我需要对指定表的名称更加不可知。因此,我不希望特别指定任何列。从这个意义上说,你认为可以做到吗?
    • Sqoop 除了这个没有这样的功能,但是通过一些自定义开发,您可以将数据类型从源映射到 Hive,它可以解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2020-01-02
    • 2020-06-30
    • 2019-02-02
    • 1970-01-01
    相关资源
    最近更新 更多