Hive 处理多行JSON?(和,奖励积分,CRLF)

Hive 处理多行JSON?(和,奖励积分,CRLF),hive,amazon-athena,Hive,Amazon Athena,我试图创建并查询一个正在读取JSON文件的Athena表,但它被换行符阻塞了。更困难的是,他们目前使用的是windows newlines CRLF 错误消息: HIVE_CURSOR_ERROR: Row is not a valid JSON Object - JSONException: A JSONObject text must end with '}' at 2 [character 3 line 1] 为了可读性,我们的JSON看起来像是每个文件一行,尽管我们有嵌套的数组,这里不

我试图创建并查询一个正在读取JSON文件的Athena表,但它被换行符阻塞了。更困难的是,他们目前使用的是windows newlines CRLF

错误消息:

HIVE_CURSOR_ERROR: Row is not a valid JSON Object - JSONException: A JSONObject text must end with '}' at 2 [character 3 line 1]
为了可读性,我们的JSON看起来像是每个文件一行,尽管我们有嵌套的数组,这里不包括

{
  "event" : "REQUEST",
  "globalTransactionId" : "8de9e1b8-3ab0-4c3b-8b85-cae4e58257a7",
  "inboundIdentifierValue" : "22",
  "timeStamp" : "2020-03-19T20:36:42.864Z",
  "elapsedTime" : 0
}
我的create表是这样的,如果我去掉所有的换行符,它就会工作

我尝试了openx serde和org.apache.hive.hcatalog.data.JsonSerDe

CREATE EXTERNAL TABLE TestA(
event string,
globaltransactionid string,
inboundidentifiervalue string,
`timestamp` string,
elapsedtime bigint
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://mybucker/test/' 

是否有任何合理的方法来实现这一点,或者我们是否必须更改文件格式?

,不支持多行文档。

看起来这是Hive的一个普遍问题;理论上你可以通过写你自己的Serde来修复它,但雅典娜不支持这一点。是和否。。。阅读更多内容,Cloudtrail log SerDe似乎可以读取多行JSON。。。但是,尝试在非cloudtrail日志中使用它只会抛出错误,至少在我的数据中是这样。是的,cloudtrail是一个特例。CloudTrail日志不是多行的,只有一行,一个文档包含一个Records属性,该属性又包含一个事件数组。CloudTrail SerDe解压了该结构,并且仅针对该用例设计。感谢您的解释!我在其他地方发现他们提到用它读取多行JSON,显然是不正确的。