【发布时间】:2020-05-13 17:28:26
【问题描述】:
我正在尝试创建和查询正在读取 JSON 文件的 Athena 表,但它在换行符上阻塞。更难的是,它们目前是 windows 换行符 (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
}
我的创建表看起来像这样,如果我去掉所有换行符,它就可以工作。
我已经尝试过 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 来修复它,但 Athena 不支持。
标签: hive amazon-athena