【问题标题】:Hadoop Remove unnecessary \n in the input filesHadoop 删除输入文件中不必要的\n
【发布时间】:2014-08-05 11:01:06
【问题描述】:

我有一个很大的输入文件,值是用竖线分隔的。并且连续有 20 个值。在第 19 个管道之后,如果出现换行符,则为记录。

但是我的输入文件不仅在 19 个管道之后而且在其他值中都有 \n。示例行看起来像这样...

101101|this\nis my sample|12547|sample\nxyz|......(第 19 个管道)|记录结束\n

我是 Hadoop 新手,不知道如何根据这个条件划分行来创建键值对。

我的另一个相关问题是,输入拆分发生在客户端,如果我必须在客户端(一台机器)有条件地拆分输入文件,考虑到大文件,它会不会很慢?请帮忙。

【问题讨论】:

    标签: hadoop input split


    【解决方案1】:

    在 Hive 中,NULL 列值表示为“\N”,这是 Hive 的默认行为。这样做是为了区分 NULL 和“NULL”(字符串 NULL)。

    如果您不希望 \N 出现在您的导出中,您可以使用 COALESCE UDF。

    您的查询大致如下所示

    
    SELECT
       COALESCE (my_column, '') AS my_column
    FROM
       my_table
    

    【讨论】:

    • 感谢您的回复。我不是要删除 NULL。我试图从文本中只删除 \n 。例如,在我上面的示例行中,输入文件中的第二列值为“this\nis my sample”。我需要从中删除 \n 并且我应该得到 'this is my sample' 作为值。
    • 好的!如果您仍在寻找解决方案,我认为您可以编写某种 shell 脚本来替换 \n 字符。告诉我你的进展情况。
    猜你喜欢
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    相关资源
    最近更新 更多