【问题标题】:using PIG to load a file使用 PIG 加载文件
【发布时间】:2011-12-27 07:02:54
【问题描述】:

我对 PIG 很陌生,我遇到了一个非常基本的问题。 我有一行代码:

A = load 'Sites/trial_clustering/shortdocs/*'
      AS (word1:chararray, word2:chararray, word3:chararray, word4:chararray);

每个文件基本上是一行 4 个逗号分隔的单词。但是 PIG 并没有将其拆分为 4 个单词。当我转储A 时,我得到:(Money, coins, loans, debt,,,) 我试过谷歌搜索,但我似乎找不到我的文件需要采用什么格式,以便 PIG 正确解释它。请帮忙!

【问题讨论】:

    标签: hadoop apache-pig


    【解决方案1】:

    您的问题是 Pig 默认为 loads files delimited by tab,而不是逗号。正在发生的事情是 "Money, coins, loans, debt" 卡在您的第一列 word1 中。当您打印它时,您会产生一种错觉,即您有多个列,但实际上第一列已填满您的整行,然后其他列为空。

    要解决此问题,您应该指定 PigStorage 以通过逗号加载:

    A = LOAD '...' USING PigStorage(',') AS (...);
    

    【讨论】:

    • 谢谢!这行得通!现在我有一个新问题,如何处理由换行符分隔的文件?我试过了
    • 感谢您的成功。现在我有一个新问题;我似乎无法使用由新行分隔的文件 A = LOAD '...' USING PigStorage('\n') AS (...);不工作! A = LOAD '...' USING PigStorage('\\n') AS (...);谢谢!
    • PigStorage 会将每个新行视为另一个元组。无法指定元组上应包含 X 行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多