gpt4 book ai didi

hadoop - Sqoop:如何添加一个额外的列来输出和替换空字符串?

转载 作者:可可西里 更新时间:2023-11-01 16:26:15 27 4
gpt4 key购买 nike

我有一个包含以下列的 SQL 表:

name, fname, e-mail, phone

如何使用 Sqoop 将此表导入 HDFS 上的 CSV 文件:

  1. 一个额外的 phone2 列,以便具有以下格式的输出 CSV 记录:

    姓名、姓名、电子邮件、电话、电话2

phone2所有 输出记录具有udef 值。

  1. 某些输入记录可能有一个空的 e-mail 字段,这会导致 CSV 行中包含 ,, 字段,如下所示:

    约翰·史密斯,,1234567

如何用undef字符串替换,,空字符串?要让 CSV 包含如下记录:

John ,Smith ,undef ,1234567, undef 汤姆,布鲁克斯,toom@abc.com,78979878,undef ... 等等

最佳答案

Sqoop 可以进行查询,因此除了指定 --null-string 和 --null-non-string 选项外,您还可以指定要导出的任何旧查询。对于您来说,您的查询非常简单:

select name, fname, e-mail, phone, null AS phone2 FROM people

然后您只需将它放入您的 sqoop 命令中。请注意,您可能需要执行 --map-column-java 来告诉 sqoop 您希望这些列是什么数据类型,因为对于自定义查询,它不需要。能够弄明白。

sqoop \
--query 'select name, fname, e-mail, phone, null AS phone2 FROM people'
--null-string UNDEF
--null-non-string UNDEF
... connection info and other options, if nec....

额外提示:某些数据库可以在启用 --direct 选项的情况下以超快的速度导出,因此您可能需要查看它,具体取决于表的大小。

关于hadoop - Sqoop:如何添加一个额外的列来输出和替换空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24862201/

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