hive xml serDe:表为空

2023-11-30

我想将 xml 数据存储到 hive 表中,XML 数据:

<servicestatuslist>
   <recordcount>1266</recordcount> 
     <servicestatus id="435680">
     <status_text>/: 61%used(9714MB/15975MB) (<80%) : OK</status_text> 
     <display_name>/ Disk Usage</display_name> 
     <host_name>zabbix.vshodc.com</host_name> 
     </servicestatus>
</servicestatuslist>

我已将 jar 文件添加到路径

hive> add jar /home/cloudera/HiveJars/hivexmlserde-1.0.5.1.jar ;    
Added /home/cloudera/HiveJars/hivexmlserde-1.0.5.1.jar to class path
Added resource: /home/cloudera/HiveJars/hivexmlserde-1.0.5.1.jar

我写了一个 hive serDe 查询:

 create table xml_AIR(id STRING, status_text STRING,display_name STRING ,host_name STRING)
    row format serde 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
    with serdeproperties(
    "column.xpath.id"="/servicestatus/@id",
    "column.xpath.status_text"="/servicestatus/status_text/text()",
    "column.xpath.display_name"="/servicestatus/display_name/text()",
    "column.xpath.host_name"="/servicestatus/host_name/text()"
    )
    stored as
    inputformat 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
    outputformat 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
    LOCATION  '/user/cloudera/input/air.xml'
    tblproperties(
    "xmlinput.start"="<servicestatus",
    "xmlinput.end"="</servicestatus>"
    );
    OK
    Time taken: 1.609 seconds

当我发出 select 命令时,它没有显示表的数据:

hive> select * from xml_AIR;       
OK
Time taken: 3.0 seconds

上面的代码有什么问题?请帮忙。


我在处理 XML Serde 时遇到了同样的问题。经过一番努力,我通过单独使用“加载数据”语句并避免在“CREATE”语句中添加“LOCATION”属性来修复它。 以下是我的 XML 数据。

<record customer_id="0000-JTALA">
        <income>200000</income>     
        <demographics>
            <gender>F</gender>
            <agecat>1</agecat>
            <edcat>1</edcat>
            <jobcat>2</jobcat>
            <empcat>2</empcat>
            <retire>0</retire>
            <jobsat>1</jobsat>
            <marital>1</marital>
            <spousedcat>1</spousedcat>
            <residecat>4</residecat>
            <homeown>0</homeown>
            <hometype>2</hometype>
            <addresscat>2</addresscat>
        </demographics>
        <financial>
            <income>18</income>
            <creddebt>1.003392</creddebt>
            <othdebt>2.740608</othdebt>
            <default>0</default>
        </financial>
    </record>

创建表语句:

CREATE TABLE xml_bank(customer_id STRING, income BIGINT, demographics map<string,string>, financial map<string,string>)
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
WITH SERDEPROPERTIES (
"column.xpath.customer_id"="/record/@customer_id",
"column.xpath.income"="/record/income/text()",
"column.xpath.demographics"="/record/demographics/*",
"column.xpath.financial"="/record/financial/*"
)
STORED AS
INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
TBLPROPERTIES (
"xmlinput.start"="<record customer",
"xmlinput.end"="</record>"
);

创建查询结果:

OK
Time taken: 0.925 seconds
hive>

对于上面的创建语句,我使用以下“LOAD DATA”语句将 XML 文件中包含的数据加载到上面创建的表中。

hive> load data local inpath '/home/mahesh/hive_input_datasets/XMLdata/XMLdatafile.xml' overwrite into table xml_bank6;

加载查询结果:

Copying data from file:/home/mahesh/hive_input_datasets/XMLdata/XMLdatafile.xml
Copying file: file:/home/mahesh/hive_input_datasets/XMLdata/XMLdatafile.xml
Loading data to table default.xml_bank6
Table default.xml_bank6 stats: [num_partitions: 0, num_files: 1, num_rows: 0, total_size: 500, raw_data_size: 0]
OK
Time taken: 0.879 seconds
hive>

最后,

选择查询和结果:

hive> select * from xml_bank6;
OK
0000-JTALA  200000  {"empcat":"2","jobcat":"2","residecat":"4","retire":"0","hometype":"2","addresscat":"2","homeown":"0","spousedcat":"1","gender":"F","jobsat":"1","edcat":"1","marital":"1","agecat":"1"}    {"default":"0","income":"18","othdebt":"2.740608","creddebt":"1.003392"}
Time taken: 0.149 seconds, Fetched: 1 row(s)
hive>

在上面的查询中我会建议的值"xmlinput.start" as "<servicestatus id", 代替"<servicestatus",因为 XML 开始标记位于模式中<servicestatus id="some data">.我相信这会对您有所帮助。

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

hive xml serDe:表为空 的相关文章

随机推荐

  • 在复杂性分析中,为什么 ++ 被认为是 2 个操作?

    在我的计算机科学II课上 教授认为 等是2个操作 然而 在程序集级别 这实际上并不是两个操作 有人可以解释一下还是这只是为了简单起见 我实际上认为它是 3 个操作 读取 递增 或其他 写入 假设它从某种共享内存读取到某种本地存储 例如寄存器
  • 服务数据更改时更新范围值

    我的应用程序中有以下服务 uaInProgressApp factory uaProgressService function uaApiInterface timeout rootScope var factory factory tas
  • 解析/操作嵌套 JSON 时递归确保 tibbles 而不是数据帧

    我必须处理包含以下内容的 JSON 文档嵌套文档并且在某种程度上有一个array其中又包含个人文件从概念上讲 在 R 中读取 解析 JSON 时会映射回 数据框行 一阶问题 问题 我正在寻找一种方法来确保 要么全部data frames总是
  • css nth-child(2n+1) 过滤掉列表项后重新绘制CSS

    我有 20 多个项目的清单 使用 nth child 2n 1 选择器更改背景颜色 即偶数项黑色 奇数项白色 当我单击按钮使用 jQuery Isotope 插件过滤掉特定项目时 它会向我想要过滤掉的项目添加一个 isotope hidde
  • 从 Powershell 中的递归中排除文件夹

    我编写了以下脚本 将特定文件夹中的所有 MP4 文件移动到根文件夹 但是我希望该脚本忽略一个名为 Camera 的特定文件夹 我使用排除命令无济于事 有人可以帮忙吗 ignore Camera Get Childitem C Root ex
  • php脚本中最佳的MYSQL查询数是多少?

    我不是专业程序员 所以我不能确定这一点 您的脚本在一页上发送了多少个 mysql 查询 以及您的最佳查询数量是多少 例如 在 stackoverflow 的主页上 它列出了问题 显示了这些问题的作者 stackoverflow 为每个问题发
  • SSL 连接、Windows 证书存储和 CAPI 引擎

    我正在创建一个SSL使用 OpenSSL API 进行连接 众所周知 在 SSL 握手中 服务器或客户端会发生一系列证书身份验证 现在对于客户端证书身份验证 客户端的证书和关联的私钥存储在Windows Certificate Store
  • 如何处理重复条目的错误?

    我有一个 PHP 表单 可以将数据输入到我的 MySQL 数据库中 我的主键是用户输入的值之一 当用户输入表中已存在的值时 会返回 MySQL 错误 Duplicate entry entered value for key 1 我想提醒用
  • 如何创建带有描述的计划任务?

    我将 Microsoft Graph API 与 Net SDK 结合使用 我正在尝试创建一个新的 PlannerTask 并在执行此操作时提供描述 PlannerTask 的描述位于相关对象 PlannerTaskDetails 上 因此
  • 我应该担心指针转换期间的对齐吗?

    在我的项目中 我们有一段这样的代码 raw data consists of 4 ints unsigned char data 16 int i1 i2 i3 i4 i1 int data i2 int data 4 i3 int dat
  • 在 Play 框架中混合 scala 和 java

    我有一个如下所示的 Java 文件 package AuthorizeNetFingerprint class Fingerprint private static Log logger LogFactory getLog Fingerpr
  • 如何将 .npy 文件转换为 .binaryproto?

    我使用 python 创建了一个平均图像文件并将其保存到 numpy 文件中 我想知道如何将此 npy 文件转换为 binaryproto 文件 我正在使用此文件来使用 GoogLeNet 进行训练 您可以简单地使用 numpy 创建 bi
  • 将行指针 URL 生成到 Github Pull 请求中

    我正在尝试自动生成一个 URL 该 URL 可以指向 GitHub Pull 请求的文件差异视图中的行号 基本上 给定 URLhttps github com weppos whois pull 90 files我想生成如下 URLhttp
  • itextSharp - 合并 pdf 文件会禁用扩展阅读器权限

    我正在使用 Itextsharp v5 1 并创建了启用的阅读器 pdf 文件 我编写了一个 C 类来填写表单并保留每个单独的 pdf 文件扩展阅读器 但是 当我在这里使用这个 MergeFiles 函数时 它会创建一个新的合并文件而不是扩
  • 我应该使用什么工具或算法从给定 Damerau-Levenshtein 距离的关键字生成单词?

    Damerau Levenshtein 距离是这样的 abcd aacd gt 1 DL distance abcd aadc gt 2 DL distance 有关编辑距离的更多信息 https pypi python org pypi
  • 如何获取所有持久化实体

    我对 lagom 框架完全陌生 因此 我今天正在阅读文档并开始修改他们的 hello world 示例 但是 我无法找到一种方法来获取所有持久实体 即本示例中的所有持久问候语 这是默认示例获取某人的问候语的方式 Override publi
  • 根据 npm start 停止所有进程...

    我正在并行启动多个 npm 任务 使用 不仅仅是按顺序 因此在包 json start npm run watch blog npm run watch data npm run server 这些子任务对我来说很有用 例如 watch b
  • iOS 按钮不起作用

    我在IB中插入了一个按钮 在 h文件中添加了这段代码 IBAction buttonPressed id sender 将动作连接到 IB 中的按钮 Touch Up Inside 然后将其放在 synthesize 正下方的 m 文件中
  • 在应用程序内进行付款的不同选项

    我正在探索使用户能够在应用程序内进行付款的选项 现在我知道用户可以通过两个选项在应用程序内进行付款 1 个应用内购买 已实施 2 贝宝 探索 那么有没有其他的方式来实现购买呢 欢迎任何链接 API 建议 PS 我打算在美国App Store
  • hive xml serDe:表为空

    我想将 xml 数据存储到 hive 表中 XML 数据