【问题标题】:How to Load the Data with out text qualifiers using PIG/HIVE/Hbase?如何使用 PIG/HIVE/Hbase 加载没有文本限定符的数据?
【发布时间】:2014-11-13 13:29:27
【问题描述】:

我有一个 CSV 文件,其中包含文本限定符(“”)数据。我想使用没有文本限定符的 PIG/Hive/Hbase 将数据加载到 hdfs 中。请帮忙

my file input.CSV
"Id","Name"
"1","Raju"
"2","Anitha"
"3","Rakesh"

我想要这样的输出:

Id,Name
1,Raju
2,Anitha
3,Rakesh

【问题讨论】:

    标签: hadoop hive hbase apache-pig


    【解决方案1】:

    在猪脚本中试试这个

    假设您的输入文件名为 input.csv

    1.首先使用copyfromlocal命令将此输入文件移动到HDFS。
    2.在猪脚本下面运行这个

    PigScript:
    HDFS 模式:

    A = LOAD 'hdfs://<hostname>:<port>/user/test/input.csv' AS line;
    B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'"(.*)","(.*)"')) AS (id:int,name:chararray);
    STORE B INTO '/user/test/output' USING PigStorage(',');
    

    本地模式:

    A = LOAD 'input.csv' AS line;
    B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'"(.*)","(.*)"')) AS (id:int,name:chararray);
    STORE B INTO 'output' USING PigStorage(',');
    

    输出:

    Id,Name
    1,Raju
    2,Anitha
    3,Rakesh
    

    【讨论】:

    • 感谢您的评论 Jayaraman!我会尝试使用这个脚本。再次感谢您!
    • 我用上面的代码试过......然后它得到如下错误消息: Input(s): Failed to read data from "hdfs:/input.csv" Output(s): Failed to generate result在“hdfs:/PIGRESULTS”中
    • 它看起来像一些配置问题。您可以尝试以本地模式而不是 hdfs 运行 pig 脚本吗?创建一个输入文件“input.csv”和猪脚本文件说“test.pig”。复制上面的代码,单独将第一行改为 A = LOAD 'input.csv' AS line;并在命令行“pig -x local test.pig”中执行猪脚本。
    • 在答案部分也更新了本地模式解决方案。运行 pig 脚本 "pig -x local test.pig" 并转到 'output' 文件夹并检查文件名以 'part*' 开头的结果
    • 现在我有 2 列所以,你使用了像 '"(.*)","(.*)"' 这样的正则表达式。假设我有 3 列,那么我是否应该再增加一列,例如 '"(.*)","(.*)","(.*)"' 或上述公式正常工作。请澄清我的疑问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多