【问题标题】:Getting HIVE_CURSOR_ERROR while querying the table created in Amazon Athena查询在 Amazon Athena 中创建的表时获取 HIVE_CURSOR_ERROR
【发布时间】:2017-11-22 15:33:21
【问题描述】:

查询在 Amazon Athena 中创建的表时出现以下错误。

错误

HIVE_CURSOR_ERROR: Row is not a valid JSON Object - JSONException: A JSONObject text must end with '}' at 2

我正在使用的示例文件和创建表的查询如下。该表已通过以下查询成功创建,但是当我从表中获取结果时出现错误。请提供您的宝贵建议。

注意 Sample Data Create table

【问题讨论】:

    标签: amazon-web-services amazon-athena


    【解决方案1】:

    AWS Athena 不支持多行 JSON。

    Athena knowledge center

    确保您的 JSON 记录在一行中

    Athena 目前不支持多行 JSON 记录。

    【讨论】:

    • 感谢 jens,但我在亚马逊网站上描述了它是为了满足多行 json 文件,并且也提到了表创建语法。我已经在我原来的问题中附上了两者。
    【解决方案2】:

    我滥用答案字段来获得更多空间并让我的想法有点结构化。我希望这对使用 Athena 的任何人都有用。

    我正在使用 Athena 创建两个表。基于单行 json 和多行 json 的报告在两个单独的存储桶文件夹和两个相应的表中。

    JSON 格式的单行报告非常简单。对于表创建,我使用此驱动程序:

    ROW FORMAT serde 'org.apache.hive.hcatalog.data.JsonSerDe'
    

    但是,如果您使用这个确切的一个来消耗多行,您会得到一个错误,另外还有三件事(I、II和III) 要注意。首先是不同的驱动程序:

    ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
    

    然后

    我(无效)JSON 格式。我的多行文件如下所示:

    {"key": "value"}
    {"key": "value"}
    

    请注意,每行有一个 JSON 对象,并且对象以 不 逗号分隔! 你可以在这里阅读:

    Store multiple elements in json files in AWS Athena

    II创建语句

    与您创建表的屏幕截图相反@abc 我在没有嵌套结构的情况下使用它:

    CREATE EXTERNAL TABLE IF NOT EXISTS internal_reports (
    `Date` Date,
    impressions INT,
    reach INT,
    follower INT,
    ...
    )
    

    III日期属性

    我遇到了整个驱动程序实验的事情,因为 Date 属性在我的单行表中引起了问题,因为我的 Date 值的时间信息不等于午夜。对于其他多行报告,我的日期还可以(时间正好是午夜)。你可以在这里阅读:

    https://developer.ibm.com/answers/questions/177238/timestamp-format-must-be-yyyy-mm-dd-hhmmssffffffff/ Athena - DATE column correct values from JSON

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2020-05-12
      • 1970-01-01
      • 2020-03-19
      • 2021-07-03
      • 1970-01-01
      相关资源
      最近更新 更多