问题标签 [hive-serde]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
103 浏览

xml - Hive XML SerDe - 在列中添加一个常量值

我有一个如下所示的 Hive 表。我希望第一列是一个常量值(它不在 XML 文件中)。如果我对值进行硬编码,当我在表格上进行选择时它不会显示......我做错了什么?我也尝试使用连接运算符(使用虚拟 xpath 并添加字符串)......仍然没有运气......感谢任何帮助......

`

下面的示例数据。每次 oozie 工作流运行时都会动态创建外部表,我想添加一个常量字段(创建表时源系统 = RMS 或.. GSS 等)

<queryReply> <Trade xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rms="http://www.example.org/store/schema/abc/durables/rms" xmlns:rms-raw="http://www.example.org/td/tm/lite/rms-raw/v1.0"> <Account>AKA</Account> <Action xsi:nil="true"/> <AllocationType xsi:nil="true"/> <TradeId> <rms:SYSTEMID>97926437</rms:SYSTEMID> </TradeId> <TradeVersion> <rms:VERSION>1</rms:VERSION> </TradeVersion> <InstrumentId xsi:nil="true"/> <TraderSourceSystemName xsi:nil="true"/> <TraderId xsi:nil="true"/> <TraderName xsi:nil="true"/> <TraderEmail xsi:nil="true"/> <TradeStatus>Open</TradeStatus> ... ... <Currency/> <UnderlyingCurrency> <UNDERCURRENCY>USD</UNDERCURRENCY> </UnderlyingCurrency> <ExpiryDate xsi:nil="true"/> <FuturesExpiryDate xsi:nil="true"/> <FutureSubType xsi:nil="true"/> <CashBalance xsi:nil="true"/> <FutureCode xsi:nil="true"/> <UnderlyingExchange xsi:nil="true"/> <CorrelationId xsi:nil="true"/> </Trade> </queryReply>

0 投票
2 回答
6938 浏览

regex - Hive:由和 SERDEPROPERTIES 分区

我正在尝试创建一个按单个字段分区的配置单元表。我要处理的数据是日志数据。日志格式为:

日期时间 IPAddress HTTP_METHOD MESSAGE

创建表配置单元查询:

并加载脚本:

当我在上表上运行选择查询时,它给了我错误消息

因异常 java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException 失败:匹配组的数量与列的数量不匹配

我错过了什么?

0 投票
1 回答
366 浏览

xml - Hive - XML- Serde - 键值对 - 创建表

键值对组合。我们试图将 ID 分解为列名,将 VALUE 分解为每列的相应数据。

我们期望创建一个如下表,预期输出:

我们尝试使用 Map 来提取键值对,但没有得到想要的结果。

任何的意见都将会有帮助

0 投票
1 回答
34253 浏览

json - 如何使用 Hive (get_json_object) 或 json serde 查询结构数组

我正在尝试查询存储在我的 HDFS 上的以下 JSON 示例文件

我使用以下内容在数据上创建了一个外部表

理想情况下,我想查询数据,以便它会这样返回给我:

有人可以为我提供一个示例,说明如何在不按以下方式编写查询的情况下进行查询:

最重要的是,我不想定义数组项元素编号。在我的示例中,我只能定位数组的第一个元素(tag4_1_1_1)。如果可能的话,我会瞄准一切。

0 投票
0 回答
258 浏览

hive - 使用 Athena 从 S3 访问日志中获取查询参数

我希望使用 Athena 从 S3 访问日志中获取查询参数的映射。

例如,对于以下日志行示例:

283e.. foo [17/Jun/2017:23:00:49 +0000] 76.117.221.205 - 1D0.. REST.GET.OBJECT 1x1.gif "GET /foo.bar/1x1.gif?placement_tag_id=0&r=574&placement_hash=12345... HTTP/1.1" 200 ... "Mozilla/5.0"

我想得到 [k, v] 的地图查询参数:

Placement_tag_id,0 r,574placement_hash,12345

因此,我将能够运行以下查询:

select * from accessLogs where queryParams.placement_tag_id=0 and X.r>=500

查询参数计数和内容因一个请求而异,因此我不能使用静态 RegEx 模式。

serde2.RegexSerDe在以下 Athena 创建表查询中使用了对日志进行基本拆分,但没有找到实现我想要的方法。我曾想过使用 MultiDelimitSerDe,但 Athena 不支持它。

关于如何实现这一目标的任何建议?

CREATE EXTERNAL TABLE IF NOT EXISTS elb_db.accessLogs ( timestamp string, request string, http_status string, user_agent string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1', 'input.regex' = '[^ ]* [^ ]* \\[(.*)\\] [^ ]* [^ ]* [^ ]* [^ ]* [^ ]* "(.*?)" ([^ ]*) [^ ]* [^ ]* [^ ]* [^ ]* [^ ]* ".*?" "(.*?)" [^ ]*' ) LOCATION 's3://output/bucket'

0 投票
1 回答
2509 浏览

json - java.lang.ClassCastException: org.apache.hadoop.hive.ql.io.orc.OrcStruct 无法转换为 org.apache.hadoop.io.Text。json serde 出错

我是在 hive 上处理 json 数据的新手。我正在开发一个获取 json 数据并将其存储到配置单元表中的 spark 应用程序。我有一个这样的json:

Json 中的 Json

展开后看起来像这样:

等级制度

我能够将 json 读入数据帧并将其保存在 HDFS 上的某个位置。但是让 hive 能够读取数据是困难的部分。

例如,在我在网上搜索后,我尝试这样做:

STRUCT对所有 json 字段使用 ,然后使用column.element.

例如:

web_app_security将是STRUCT表内的列(类型)的名称,并且其中的其他 jsonconfig_web_cms_authentication, web_threat_intel_alert_external也将是 Structs(带有ratingrating_numeric作为字段)。

我尝试使用 json serde 创建表。这是我的表定义:

我试图用 json serde 解析行。在我将一些数据保存到表后,当我尝试查询它时出现以下错误:

我不确定我是否以正确的方式做这件事。

我也对将数据存储到表中的任何其他方式持开放态度。任何帮助,将不胜感激。谢谢你。

0 投票
1 回答
1013 浏览

xml - HIVE XML SerDe:异常 java.io.IOException:java.lang.NullPointerException 失败

我从一个带有 XML SerDe 的 XML 文件创建一个带有 HIVE (Hive 2.1.1-mapr-1703) 的外部表。该文件是来自 W3C 联盟的XML 示例。

这是我创建表的代码:

表本身存在是因为 describe 语句不会导致错误:

如下所示的简单选择语句会导致NullPointerException

这是输出:

谁能帮忙,请向我解释错误?

谢谢,弗兰克

0 投票
2 回答
2491 浏览

hadoop - 由逗号和多个空格分隔的 Hive 表

我有一个类似的问题: Hive table source delimited by multiple spaces

我的数据如下所示:

这意味着我的列分隔符是“逗号加上可变数量的空格”。

我试图field.delim通过将此逗号添加到正则表达式来简单地进行修改,但它不起作用。结果是,所有数据都被放入第一列 ( basin),而所有其他列都为 NULL。

我正在运行 HDP 2.5 (Hive 1.2.1)。

感谢您的任何帮助和建议。

0 投票
0 回答
55 浏览

java - Hive SerDe 接口 StructField 中的 fieldID 代表什么?

为了实现 SerDe,我使用 StructField 实现。

我已经升级了 hive 版本,现在接口有了 getFieldID 方法。

这个方法代表什么?对它的实施有什么特别的指导吗?

0 投票
1 回答
1185 浏览

json - json文件到hive外部表

我有 json 格式的数据。

  1. 正确的

[{"text":"foo0","number":123},{"text":"foo1","number":345},{"text":"foo2","number":678},{ “文本”:“foo3”,“数字”:901}]

  1. 不正确

{"text":"foo0","number":123}{"text":"foo1","number":345} {"text":"foo2","number":678}{"text": “foo3”,“数字”:901}

创建外部表

然后我启动

结果我得到

  1. 对 json 更正(检索与行一样多的元素)

文字编号

{"number":"123","text":"foo0"} {"number":"345","text":"foo1"}

  1. 对于不正确的 json-(仅检索第一个元素)

文字编号

富0 123

我应该如何编写脚本来创建结果正确的列表?

文字编号

富0 123

富1 345

foo2 678

foo3 901

谢谢