使用 pig latin 的 XMLloader
XMLloader using pig latin
<user>
<ids>
<id>
456
</id>
<id>
123
</id>
</ids>
<username>
Taylor
</username>
</user>
以上运行成功但存储了 0 条记录
请帮我解决这个问题
您需要为 .
添加 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>'))
<user>
<ids>
<id>
456
</id>
<id>
123
</id>
</ids>
<username>
Taylor
</username>
</user>
以上运行成功但存储了 0 条记录
请帮我解决这个问题
您需要为 .
添加 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>'))