【问题标题】:XMLloader using pig latin使用猪拉丁文的 XMLloader
【发布时间】:2015-04-15 06:26:15
【问题描述】:
<user>

<ids>
<id>
456
</id>
<id>
123
</id>
</ids>

<username>
Taylor
</username>
</user>

以上运行成功,但存储了0条记录

请帮帮我

【问题讨论】:

  • 输入是 456 Taylor

标签: regex xml apache-pig


【解决方案1】:

您需要为. 添加一个singleline 模式选项以匹配换行符,或者为[\\s\\S]* 添加一个解决方法:

B = foreach A GENERATE FLATTEN(REGEX_EXTRACT_ALL(x, '<user>\\n\\s*<id>([\\s\\S]*)</id>\\n\\s*<username>([\\s\\S]*)</username>\\n\\s*</user>')) 

甚至可以省略 \n,因为 \s 已经捕获了它:

B = foreach A GENERATE FLATTEN(REGEX_EXTRACT_ALL(x, '<user>\\s*<id>([\\s\\S]*)</id>\\s*<username>([\\s\\S]*)</username>\\s*</user>')) 

【讨论】:

  • 请您帮助我们如何为 .匹配新行.. 是您使用的 (?s) 吗?
  • 太棒了..谢谢使用 \\n\\s* 的实际意义
  • 如果你想匹配一个换行符强制,然后是任何空格,任何重复次数,模式\n\s* 是有意义的。在您的情况下,在 XML 中,这是没有意义的,因为您没有尝试匹配输入字符串中的特定行。
  • 嗨..仍然得到相同的..0记录存储..任何替代解决方案?
  • 你试过单斜杠吗?我注意到文档中使用了单斜杠,但是您说您的代码运行良好,所以我认为双斜杠在您的情况下有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
相关资源
最近更新 更多