【问题标题】:Replace special characters in hive columns替换 hive 列中的特殊字符
【发布时间】:2017-05-26 21:10:52
【问题描述】:

我在 mysql 中有一个表说 emp

列名是emp.id、emp.name、emp.salary、emp.dno

现在我进行 sqoop 导入并在单个语句中创建一个配置单元表 emp。

当我使用 select * query 查询配置单元表 emp 时

我得到了错误

Error while compiling statement: FAILED: RuntimeException java.lang.RuntimeException: cannot find field emp from [0:emp.id, 1:emp.name, 2:emp.salary, 3:emp.dno]

由于 hive 不支持特殊字符,我该如何解决这个问题。

我们能否将 .(dot) 替换为 _(underscore),因为 hive 支持列名中的下划线。

如果是,那我们该怎么做。

【问题讨论】:

    标签: mysql hive special-characters


    【解决方案1】:

    一旦 sqoop 导入完成,您可以尝试更改 hive 中的列名

    ALTER TABLE EMP
    CHANGE `emp.id` emp_id int
    

    【讨论】:

    • 我这样做了,但我想在创建 hive 表本身时动态地这样做
    • 您可以使用 sqoop 的--query 选项在导入时更改列名。比如` Sqoop import --connect jdbc:mysql://localhost:3306/retail_db --usernameretail_dba --password cloudera --e 'SELECT order.id AS ORDER_ID FROM orderdot where $CONDITIONS ' --hive-import --m 1 --target-dir /user/hive/warehouse/orderdot --hive-table orderdot `
    • 我有超过50列像上面的问题我们如何动态传递选择参数@Pushkr
    猜你喜欢
    • 2020-07-15
    • 2014-11-03
    • 2017-06-24
    • 2017-07-05
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多