使用 PIG 从 Hive 表解析嵌套 XML 字符串

2024-03-19

我正在尝试使用 PIG 从 Hive 表中的字段而不是从 XML 文件中提取一些 XML(这是我读过的大多数示例的假设)。 XML 来自排列如下的表:

ID, {XML_string}

XML 字符串包含 n. 行,始终包含最多 10 个属性中的至少一个。我们可以假设属性#1 将始终存在并且是唯一的。

<row>
 <att1></att1>
 <att2></att2>
 ...
</row>
<row>
 <att1></att1>
 <att2></att2>
 ...
</row>
...

我想将其转换为一个新表,其中 XML 字符串中的每一行都分解为新表中的单独行,但我仍然想包含现有表中的 ID。

ID, att1, att2, att3
==  ====  ====  ====
1   1     xxx   xxx
1   2     xxx   xxx
1   3     xxx   xxx
2   1     xxx   xxx

到目前为止,我已经在 PIG 中使用 XPathAll 解决了这个问题。我读过很多建议避免使用 Regex 进行 XML 解析的建议。

REGISTER /home/piggybank-0.12.0.jar
DEFINE XPathAll org.apache.pig.piggybank.evaluation.xml.XPathAll();
A = LOAD 'HiveTable' USING org.apache.hive.hcatalog.pig.HCatLoader();
B= FOREACH A GENERATE id, 
    XPathAll(xml_string,'ROW/_ATT1') as att1;
    XPathAll(xml_string,'ROW/_ATT2') as att2;
    XPathAll(xml_string,'ROW/_ATT3') as att3;
dump B;

假设第 1 项有三个行实例,这会产生以下输出:

(1 (Att1-i1,Att1-i2,Att1-i3),(Att2-i1,Att2-i2,Att2-i3),(Att3-i1,Att3-i2,Att3-i3))

所有信息似乎都在那里,我似乎无法解锁将每个嵌入元组中的第一个元素提取到新行中的方法,然后提取第二个元素,依此类推。换句话说:

(1, Att1-i1, Att2-i1, Att3-i1)
(1, Att1-i2, Att2-i2, Att3-i2)
(1, Att1-i3, Att2-i3, Att3-i3)

我坚信这可以使用 Hive + Pig 来完成,而不必求助于 Java 等。我将不胜感激任何见解。我对迄今为止采取的方法并不珍惜,所以如果我走了很长的路,请告诉我!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PIG 从 Hive 表解析嵌套 XML 字符串 的相关文章

  • Hive中group by后是否可以连接字符串字段

    我正在评估 Hive 需要在 group by 之后进行一些字符串字段连接 我找到了一个名为 concat ws 的函数 但看起来我必须显式列出所有要连接的值 我想知道是否可以在 Hive 中使用 concat ws 做这样的事情 这是一个
  • 工具栏下方的白条

    所以我有一个带有工具栏的应用程序 工具栏下方出现一个白条 最后的屏幕截图 我不希望那个栏在那里我尝试添加 maxHeight 以查看它是否有效 但没有运气 这是我的样式和 v21 style xml style
  • 解析 Angular2 中的 xml 以在视图中呈现

    我是否需要解析 xml 以从 xml 获取数据以在 html 中呈现 我目前正在使用获取本地 xml 文件http get请求并在控制台日志中显示 xml 文件中的所有信息 我认为它只是在读取它 问题是如何在angular2中将xml转换为
  • 使用自定义元素类在 Python 中解析 xml

    我想使用 Python 的 xml etree ElementTree 模块解析 xml 文档 但是 我希望生成的树对象中的所有元素都具有我定义的一些类方法 这建议创建我自己的 Python 元素类的子类 但我无法告诉解析器在解析时使用我自
  • 在 VBScript 中导航 XML 节点(对于 Dummy)

    我正在尝试编写一个脚本来为我操作 xml 文件中的一些数据 我对 VBScript 还很陌生 但有 VB NET 和 VBA 背景 所以我觉得我知道自己在做什么 我认为可能有更好的方法来导航文件 而不是对每一行进行大量调用 InStr 或类
  • 将某些子节点下移到新的孙子级别

    我发现了有关将节点向上移动到父节点的其他问题 但我缺少将它们向下移动到新创建的节点的技巧 Given
  • 从 XML 资源创建 hashmap/map

    我正在制作一个应用程序 其中 Web 服务从 Web 服务 即 BEL FRA SWE 获取 除其他外 一堆代码 在运行时 我想将这些代码翻译成适当的名称以显示给用户 即比利时 法国 瑞典 可能有很多这样的代码 所以我想知道是否有任何适当的
  • Xml 瞬态无法工作 jaxb(Moxy)。?

    Xml 瞬态注释不适用于以下模型 XmlRootElement public class JdfValidation private String name private String dataType private String er
  • 将抽屉布局添加到主要活动中

    我创建了一个应用程序 它工作得很好 但现在我想在主活动中包含导航抽屉 我知道代码模板 但为此我需要创建新活动 我的问题是如何将抽屉布局包含到现有活动中仅包含 Recycler 视图和 fab 按钮 是否可以包含 抱歉这个大问题 您可以按照以
  • C# - 具有属性和节点值的 Xml 元素

    我有一些需要反序列化为对象的 Xml XML 是
  • 从 XML 文档生成嵌套列表

    在 python 中工作 我的目标是解析我制作的 XML 文档并创建一个嵌套的列表列表 以便稍后访问它们并解析提要 XML 文档类似于以下代码片段
  • 是否值得购买 Mahout in Action 以跟上 Mahout 的速度,或者还有其他更好的来源吗?

    我目前是一个非常随意的用户阿帕奇马胡特 http mahout apache org 我正在考虑购买这本书象夫在行动 http www manning com owen 不幸的是 我很难理解这本书的价值 并且认为它是一本曼宁早期访问计划 h
  • python - lxml:强制执行属性的特定顺序

    我有一个 XML 编写脚本 可以为特定的第 3 方工具输出 XML 我使用原始 XML 作为模板来确保构建所有正确的元素 但最终的 XML 看起来与原始的不同 我以相同的顺序编写属性 但 lxml 按自己的顺序编写它们 我不确定 但我怀疑第
  • 使用 JMS Serializer 将 XML 反序列化为具有嵌套节点的实体

    我想使用 JMS Serializer 将 XML 文件反序列化为实体 它对于直接属性非常有效 但是当涉及到嵌套属性时 如果不创建相关实体 我就无法使其工作 例如
  • 使用 PHP 获取 XML 文件的内容 [重复]

    这个问题在这里已经有答案了 可能的重复 file get contents 与 https https stackoverflow com questions 1975461 file get contents with https 使用
  • (不?)使用 JavaScriptSerializer 将 xml 文件(未知模式)转换为 c# 中的 json

    JavascriptSerializer 是将 xml 文件 未知模式 转换为 json 字符串的 工具 吗 这里有一些线程讨论如何在 C 中将 xml 转换为 json 以及一些推荐的专用解决方案 http www phdcc com x
  • Spark 上的 Hive 2.1.1 - 我应该使用哪个版本的 Spark

    我在跑蜂巢2 1 1 Ubuntu 16 04 上的 hadoop 2 7 3 根据Hive on Spark 入门 https cwiki apache org confluence display Hive Hive on Spark
  • 在 SQL 中搜索 xml 列中的多个值

    这是我的桌子 BasketId int BasketName varchar BasketFruits xml 1 Gold
  • Android - 使用 HttpURLConnection 来 POST XML 数据

    我遇到了一些死胡同 需要一些帮助 请 我对 Android 开发 以及一般编码 非常陌生 基本上我需要使用 HttpURLConnection 将 XML 数据发布到 URL 但无法让它工作 我的应用程序从 GET 请求读取并传递 XML
  • 如何为Spring测试创建TestContext?

    我有一个相对较小的 Java 库 它实现了几十个 bean 没有数据库或 GUI 我创建了一个 Spring Bean 配置文件 其他 Java 项目使用该文件将我的 bean 注入到他们的东西中 我现在第一次尝试使用 Spring Tes

随机推荐

  • 如何在 ILNumerics 中有效地绘制大曲面(例如 1000x1000)?

    这是我使用的代码 public partial class Form1 Form private ILPlotCube plotcube null private ILSurface surface null public Form1 In
  • 使用字符串中的名称获取变量的值

    我想从变量的名称中获取其值 澄清一下 XML 文档以字符串形式提供变量名称 我想获得价值 像这样的东西 string bublegumA strawberry string bubblegumB banana get which varia
  • 将基于视图的 NSOutlineView 绑定到 Core Data

    我正在尝试将新的基于视图的 OutlineView 实现为我的 Mac 应用程序中的源列表 不过 我无法获取要显示的值 因此我从核心数据应用程序模板制作了一个小型测试应用程序 但也无法让它在其中正常工作 我在数据模型中定义了两个简单的类 我
  • 在 null 上调用成员函数 store() - laravel 5.4

    我正在尝试上传图像 但每次提交时都会返回 store 错误 我已将表单设置为 enctype multipart form data 这没有帮助 有人能指出我正确的方向吗 Thanks 控制器内部功能 public function sto
  • 来自 Android 的 Facebook Score API 调用未在时间轴/股票代码上显示高分

    我正在尝试让 Android 应用程序将高分发布到 Facebook 类似于 Facebook 上的 愤怒的小鸟 的做法 它显示在时间轴上 也显示在股票代码中 请记住 该游戏仅在 Android 上运行 并且没有 FB Canvas 应用程
  • GiST 和 GIN 索引之间的区别

    我正在实现一个表 其中有一列的数据类型为tsvector我想了解什么索引更好使用 GIN 还是 GiST 在浏览中postgres 文档在这里 http www postgresql org docs 9 1 static textsear
  • 模拟安全警报的解决方案 - X509TrustManager 的不安全实现

    因此 最近我在开发人员控制台中收到以下警告 为了解决该问题 我已完成了所需的修复 根据谷歌的建议 here https support google com faqs answer 6346016 要确认您已进行正确的更改 请将应用程序的更
  • CouchDB 备份和克隆数据库

    我们正在寻找 CouchdDB 作为类似 CMS 的应用程序 围绕备份我们的生产数据库有哪些常见模式 最佳实践和工作流程建议 我对克隆数据库以用于开发和测试的过程特别感兴趣 仅从实时运行的实例下复制磁盘上的文件就足够了吗 您可以在两个实时运
  • TabLayout 使用自定义视图更新选项卡内容

    我在用着TabLayout新的材料设计 我有一个问题 创建选项卡后我无法更新自定义视图的选项卡内容 我可以用以下方法简化 PagerAdapter 中的方法 public View setTabView int position boole
  • 记录器服务错误:鼠标左键按下:无法找到匹配的元素 - Xcode 错误

    我正在尝试通过 XCTest 自动化我的 mac 应用程序 当尝试从 XCode 记录应用程序时 我收到以下错误消息 当我点击按钮时会发生这种情况 按钮层次结构是 按钮 gt 堆栈视图 gt NSView 这里 button是NSButto
  • 外键和索引问题

    我正在使用 SQL Server 2008 Enterprise 我有一个表 其中一个列引用另一个表 在同一个数据库中 中的另一列作为外键 这是相关的SQL语句 更详细地说 表 Foo 中的列 AnotherID 引用了另一个表表 Goo
  • 如何使用 sass 正确避免在 HTML 上嵌入 twitter bootstrap 类名

    我正在开发一个刚刚开始的 Rails 项目 我们想使用 twitter bootstrap 作为我们样式的基础 一开始我们只是直接在 HTML 代码上使用 bootstrap 的类名 就像 bootstrap 的文档中所示 但在阅读以下文章
  • 如何检查 Python 数组中是否存在某个元素(相当于 PHP in_array)?

    我是 Python 新手 我正在寻找一个标准函数来告诉我数组中是否存在某个元素 我找到了index方法 但如果未找到该元素 则会抛出异常 我只需要一些可以返回的简单函数true如果该元素在数组中或者false if not 基本上相当于 P
  • hook_user():将额外的字段插入数据库而不仅仅是表单

    我可以在注册中添加一个额外的字段 我需要知道的是我需要采取什么步骤来获取该输入并将其插入到 drupal 的用户表中 下面的代码位于我的模块中 它仅向表单添加一个字段 但是当提交时 它不会对数据执行任何操作 function perscri
  • 如何组合两个索引不同的 pandas 系列?

    我尝试将两个不同索引的系列组合在一起 相同的行数 我试过pd concat s1 s2 axis 1 例如 s1 为 index s1 0 1 5 1 2 s2 是 index s2 a 1 b 2 但我得到 index s1 s2 0 1
  • 批量从文本文件中删除重复行

    是否可以从文本文件中删除重复的行 如果是 怎么办 当然可以 但就像大多数批处理文本文件一样 它并不漂亮 而且不是特别快 该解决方案在查找重复项时忽略大小写 并对行进行排序 文件名作为第一个也是唯一一个参数传递给批处理脚本 echo off
  • 运行 jQuery 函数 onclick

    所以我实现了一些 jQuery 它基本上通过由滑块激活的滑块来切换内容 a 标签 现在考虑一下 我宁愿让保存链接的 DIV 本身就是链接 我正在使用的 jQuery 在我的脑海中看起来像这样 a
  • 用 jQuery 收集表单中的所有项目

    如何收集 jQuery 中的所有复选框和下拉列表项进行保存 或者 对于最新版本的 jquery 您可以使用 http docs jquery com Ajax serialize http docs jquery com Ajax seri
  • 如何解决DEP6500和DEP6701错误?

    我有一个项目叫BTLE在它自己的解决方案中 加载项目并使用手机上的调试器运行它可以找到 我有第二个解决方案 可以很好地加载和编译 我添加了BTLE项目 添加 现有项目 到第二个解决方案 编译它并尝试在调试器中运行它 我可以看到应用程序已正确
  • 使用 PIG 从 Hive 表解析嵌套 XML 字符串

    我正在尝试使用 PIG 从 Hive 表中的字段而不是从 XML 文件中提取一些 XML 这是我读过的大多数示例的假设 XML 来自排列如下的表 ID XML string XML 字符串包含 n 行 始终包含最多 10 个属性中的至少一个