问题标签 [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.
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>
regex - Hive:由和 SERDEPROPERTIES 分区
我正在尝试创建一个按单个字段分区的配置单元表。我要处理的数据是日志数据。日志格式为:
日期时间 IPAddress HTTP_METHOD MESSAGE
创建表配置单元查询:
并加载脚本:
当我在上表上运行选择查询时,它给了我错误消息
因异常 java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException 失败:匹配组的数量与列的数量不匹配
我错过了什么?
xml - Hive - XML- Serde - 键值对 - 创建表
键值对组合。我们试图将 ID 分解为列名,将 VALUE 分解为每列的相应数据。
我们期望创建一个如下表,预期输出:
我们尝试使用 Map 来提取键值对,但没有得到想要的结果。
任何的意见都将会有帮助
json - 如何使用 Hive (get_json_object) 或 json serde 查询结构数组
我正在尝试查询存储在我的 HDFS 上的以下 JSON 示例文件
我使用以下内容在数据上创建了一个外部表
理想情况下,我想查询数据,以便它会这样返回给我:
有人可以为我提供一个示例,说明如何在不按以下方式编写查询的情况下进行查询:
最重要的是,我不想定义数组项元素编号。在我的示例中,我只能定位数组的第一个元素(tag4_1_1_1)。如果可能的话,我会瞄准一切。
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'
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 读入数据帧并将其保存在 HDFS 上的某个位置。但是让 hive 能够读取数据是困难的部分。
例如,在我在网上搜索后,我尝试这样做:
STRUCT
对所有 json 字段使用 ,然后使用column.element
.
例如:
web_app_security
将是STRUCT
表内的列(类型)的名称,并且其中的其他 jsonconfig_web_cms_authentication, web_threat_intel_alert_external
也将是 Structs(带有rating
和rating_numeric
作为字段)。
我尝试使用 json serde 创建表。这是我的表定义:
我试图用 json serde 解析行。在我将一些数据保存到表后,当我尝试查询它时出现以下错误:
我不确定我是否以正确的方式做这件事。
我也对将数据存储到表中的任何其他方式持开放态度。任何帮助,将不胜感激。谢谢你。
xml - HIVE XML SerDe:异常 java.io.IOException:java.lang.NullPointerException 失败
我从一个带有 XML SerDe 的 XML 文件创建一个带有 HIVE (Hive 2.1.1-mapr-1703) 的外部表。该文件是来自 W3C 联盟的XML 示例。
这是我创建表的代码:
表本身存在是因为 describe 语句不会导致错误:
如下所示的简单选择语句会导致NullPointerException:
这是输出:
谁能帮忙,请向我解释错误?
谢谢,弗兰克
hadoop - 由逗号和多个空格分隔的 Hive 表
我有一个类似的问题: Hive table source delimited by multiple spaces
我的数据如下所示:
这意味着我的列分隔符是“逗号加上可变数量的空格”。
我试图field.delim
通过将此逗号添加到正则表达式来简单地进行修改,但它不起作用。结果是,所有数据都被放入第一列 ( basin
),而所有其他列都为 NULL。
我正在运行 HDP 2.5 (Hive 1.2.1)。
感谢您的任何帮助和建议。
java - Hive SerDe 接口 StructField 中的 fieldID 代表什么?
为了实现 SerDe,我使用 StructField 实现。
我已经升级了 hive 版本,现在接口有了 getFieldID 方法。
这个方法代表什么?对它的实施有什么特别的指导吗?
json - json文件到hive外部表
我有 json 格式的数据。
- 正确的
[{"text":"foo0","number":123},{"text":"foo1","number":345},{"text":"foo2","number":678},{ “文本”:“foo3”,“数字”:901}]
- 不正确
{"text":"foo0","number":123}{"text":"foo1","number":345} {"text":"foo2","number":678}{"text": “foo3”,“数字”:901}
创建外部表
然后我启动
结果我得到
- 对 json 更正(检索与行一样多的元素)
文字编号
{"number":"123","text":"foo0"} {"number":"345","text":"foo1"}
- 对于不正确的 json-(仅检索第一个元素)
文字编号
富0 123
我应该如何编写脚本来创建结果正确的列表?
文字编号
富0 123
富1 345
foo2 678
foo3 901
谢谢