【问题标题】:Pig removing parentheses when storing output猪在存储输出时删除括号
【发布时间】:2012-11-25 15:37:25
【问题描述】:

我是 Pig 编程新手,目前我正在尝试使用 pig 实现我的 Hadoop 作业。 到目前为止,我的 Pig 程序有效。我将一些输出文件存储为 *.txt ,并以分号作为分隔符。 我的问题是 Pig 在元组周围添加了括号......

是否可以将输出存储在没有这些括号的文件中?只存储值?也许通过用 UDF 覆盖 PigStorage 方法? 有人给我提示吗?

我想将我的输出文件读入不带括号的 RDBMS (Oracle)。

【问题讨论】:

  • 您能举个例子说明您想要达到的目标吗?
  • ...以及您尝试过的产生不良输出的方法。
  • 当我使用 PigStorage 函数并将我的输出写入文件时,元组或包用相应的括号括起来。将结果存储到“输出”中使用 PigStorage(';'); asdf,"{(asdf,fdsa,60,2)}" fdsa,"{(fdsa,asdf,60,2)}" callerA,"{(callerA,callerB,5,1),(callerA,callerC,100 ,1)}" callerB,"{(callerB,callerA,5,1)}" callerC,"{(callerC,callerA,100,1)}"
  • 我想去掉 "{("'s 和 ")}"'s。
  • 如果这样做,您将丢失数据的结构。如果这是您想要的,那么 Pig 脚本的设计应该反映这一点。您希望 RDBMS 如何解释它的发现?没有办法让 Pig 省略这些大括号,但您可以使用 FLATTEN 更改数据结构并消除所有元组和包。

标签: hadoop apache-pig bigdata parentheses


【解决方案1】:

您可能需要编写自己的自定义 Storer。请参阅:http://wiki.apache.org/pig/Pig070LoadStoreHowTo

将其编写为普通的 CSV 或其他内容应该不会太难。如果需要,您还可以使用预先存在的 DBStorage 类直接写入 Oracle。

【讨论】:

    【解决方案2】:

    对于首先找到此主题的人,这里回答了问题: Remove brackets and commas in output from Pig

    像这样在脚本中使用 FLATTEN 命令:

    output = FOREACH [variable] GENERATE FLATTEN (($1, $2, $3));<br>
    STORE output INTO '[path]' USING PigStorage(,);
    

    注意要展平的输出的第二组括号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-15
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多