当前位置: 首页 > 知识库问答 >
问题:

如何使用serde通过hive解析xml数据?

农存
2023-03-14

我有一个. xml文件,具有以下数据:

<book>
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price discount="0.15">44.95</price>
    <publish_date>2000-10-01</publish_date>
    <description>An in-depth look at creating applications with XML.</description>
</book>
<book>
    <author>Knorr, Stefan</author>
    <title>Creepy Crawlies</title>
    <genre>Horror</genre>
    <price discount="0.15">4.95</price>
    <publish_date>2000-12-06</publish_date>
    <description>An anthology of horror stories about roaches,centipedes, scorpionsand other insects.</description>
</book>
<book>
    <author>Galos, Mike</author>
    <title>Visual Studio 7: A Comprehensive Guide</title>
    <genre>Computer</genre>
    <price discount="0.15">49.95</price>
    <publish_date>2001-04-16</publish_date>
    <description>Microsoft Visual Studio 7 is explored in depth, looking at how Visual Basic, Visual C++, C#, and ASP+ are integrated into a comprehensive development environment.</description>
</book>

我试图通过配置单元来解析xml,方法是使用serde在hdfs上的xml文件上创建外部表。请在下面找到我的代码

我先加了罐子

add jar hdfs://xtlinno1vftsnxg:8020/user/hdfs/hivexmlserde-1.0.5.3.jar;

CREATE EXTERNAL TABLE hive_test_xml(
. . . . . . . . . . . . . . . . . . . . . . .> col1            string,
. . . . . . . . . . . . . . . . . . . . . . .> col2            string,
. . . . . . . . . . . . . . . . . . . . . . .> col3            string)
. . . . . . . . . . . . . . . . . . . . . . .> ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
. . . . . . . . . . . . . . . . . . . . . . .> WITH SERDEPROPERTIES (
. . . . . . . . . . . . . . . . . . . . . . .> "column.xpath.col1"="/book/author/text()",
. . . . . . . . . . . . . . . . . . . . . . .> "column.xpath.col2"="/book/title/text()",
. . . . . . . . . . . . . . . . . . . . . . .> "column.xpath.col3"="/book/genre/text()"
. . . . . . . . . . . . . . . . . . . . . . .> )
. . . . . . . . . . . . . . . . . . . . . . .> STORED AS
. . . . . . . . . . . . . . . . . . . . . . .> INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
. . . . . . . . . . . . . . . . . . . . . . .> OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
. . . . . . . . . . . . . . . . . . . . . . .> LOCATION 'hdfs://xtlinno1vftsnxg:8020/user/poctest2/testxml2.xml'
. . . . . . . . . . . . . . . . . . . . . . .> TBLPROPERTIES (
. . . . . . . . . . . . . . . . . . . . . . .> "xmlinput.start"="<book",
. . . . . . . . . . . . . . . . . . . . . . .> "xmlinput.end"="</book>");

我得到的错误是

执行错误,返回代码1从org.apache.hadoop.hive.ql.exec.DDLTask. org/apache/hadoop/hive/serde2/SerDe(state=08S01, code=1)

我不知道如何解决这个错误...请帮助!!

共有1个答案

龚俊捷
2023-03-14

metastore_db很可能已损坏。将验证设置为忽略并修复metastore中的表名。

set hive.msck.path.validation=ignore;
MSCK REPAIR TABLE table_name;
 类似资料:
  • 问题内容: 我想知道使用shellscript解析XML文件的最佳方法是什么? 应该一个人手工做吗? 第三层图书馆是否存在? 如果您已经做到了,请告诉我您是如何做到的 问题答案: 您可以尝试xmllint xmllint程序解析一个或多个XML文件,这些文件在命令行上指定为xmlfile。根据选择的选项,它会打印各种类型的输出。这对于检测XML代码和XML解析器中的错误很有用 它允许您使用–pat

  • 问题内容: 如何解析XML,以及如何使用jQuery浏览结果?这是我的示例XML: 我想通过此路径找到节点-> -> -> ? 问题答案: 有此功能: 您可以像这样使用它: 如果您确实想要一个对象,则需要一个插件。

  • 问题内容: 它很好用,但是我希望它返回一个包含所有字符串的数组,而不是最后一个元素返回一个字符串。 任何想法如何做到这一点? 问题答案: 因此,你想构建一个XML解析器来解析这样的RSS feed。 现在,你可以使用两个SAX实现。你可以使用org.xml.sax或android.sax实现。在发布简短的示例后,我将解释两者的优点和缺点。 android.sax Implementation 让我

  • 问题内容: 它很好用,但是我希望它返回一个包含所有字符串的数组,而不是最后一个元素返回一个字符串。 任何想法如何做到这一点? 问题答案: 因此,你想构建一个XML解析器来解析这样的RSS feed。 现在,你可以使用两个SAX实现。你可以使用org.xml.sax或android.sax实现。在发布简短的示例后,我将解释两者的优点和缺点。 android.sax实现 让我们从实现开始。 你首先必须

  • 我正在一个大型企业平台上集成,供应商喜欢频繁更新其XML格式,尽管他们promise更改将继续向后兼容。我有一个可以工作的XSD…现在…但我想用我们的应用程序代码部署该模式,而不必为每个web服务更新重新部署。作为另一个推动力,(基于JVM的)配置语言具有非常好的XSD类型导入。 作为一种后备方法,我可以使用XPath查询提取特定元素,但这就不那么令人愉快了。 如何继续针对已过时但未过时的架构文件

  • 问题内容: 如何解析包含数据的XML 我们如何解析xml并获取包含在???中的数据? 问题答案: (http://www.java2s.com/Code/Java/XML/GetcharacterdataCDATAfromxmldocument.htm)