处理多行json(和,加分,crlf)

sxissh06  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(329)

我试图创建和查询一个正在读取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
}

我的create表是这样的,如果去掉所有的换行符,它就可以工作了。
我试过openxserde和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/'

有没有什么合理的方法使这个工作,或者我们必须改变文件格式?

ki1q1bka

ki1q1bka1#

雅典娜要求每行有一个json文档,不支持多行文档。

相关问题