Sqoop 函数“--map-column-hive”被忽略

Posted

技术标签:

【中文标题】Sqoop 函数“--map-column-hive”被忽略【英文标题】:Sqoop function '--map-column-hive' being ignored 【发布时间】:2016-09-30 19:35:22 【问题描述】:

我正在尝试将文件作为镶木地板导入 hive,而 --map-column-hive column_name=timestamp 被忽略。列 'column_name' 最初是 sql 中的 datetime 类型,它在 parquet 中将其转换为 bigint。我想通过sqoop把它转成时间戳格式,但是不行。

sqoop import \

--table table_name \

--driver com.microsoft.sqlserver.jdbc.SQLServerDriver \

--connect jdbc:sqlserver://servername \

--username user --password pw \

--map-column-hive column_name=timestamp\

--as-parquetfile \

--hive-import \

--hive-table table_name -m 1

当我在 hive 中查看表时,它仍然显示具有原始数据类型的列。

我尝试了 column_name=string,但也没有用。

我认为这可能是将文件转换为镶木地板的问题,但我不确定。有没有人可以解决这个问题?

运行该命令时我没有收到任何错误,它只是完成了导入,就好像该命令不存在一样。

【问题讨论】:

【参考方案1】:

ParquetSerde 中的 hive 1.2 版本 Timestmap 支持不可用。 1.1.0 中仅支持二进制数据类型。

请查看link

请将您的版本升级到 1.2 及更高版本,它应该可以工作。

Please check the issue log and release notes below.

https://issues.apache.org/jira/browse/HIVE-6384

https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12329345&styleName=Text&projectId=12310843

【讨论】:

不是timestamp格式不行,是函数--map-column-hive不行。如上所述,我尝试将列更改为字符串,但没有任何反应。 你的蜂巢版本是什么? 是1.1.0版 在 1.1.0 中只有二进制数据类型支持可用,从 1.2 中添加了其他支持的数据类型。请检查下面的链接cwiki.apache.org/confluence/display/Hive/…,您可能需要将您的版本升级到 1.2 及更高版本。 好的,我会试试的。谢谢:)

以上是关于Sqoop 函数“--map-column-hive”被忽略的主要内容,如果未能解决你的问题,请参考以下文章

postgresql 中不存在函数 min(uuid)

sqoop导入导出

sqoop启动job报错,怎么解决

[sqoop] sqoop命令

[Sqoop]Sqoop使用

如何从 Sqoop 选项生成 Sqoop 命令?