我正在尝试从S3导入JSON数据,并在进行一些查询后,将输出再次以JSON格式导出到S3。但是,我在EMR群集上的配置单元步骤中收到“org.apache.hadoop.hive.serde2.SerDeException:java.io.IOException:找不到预期的启动 token ” 错误。为了了解问题所在,我简化了Hive脚本和JSON数据,但始终给出相同的错误。我怎么解决这个问题?

集群配置:



简化的JSON数据的内容:

[{"MyID":"FOO123","MyField":"FOO"},{"MyID":"BAR123","MyField":"BAR"}]

hive 脚本:

DROP TABLE IF EXISTS SOURCE;
DROP TABLE IF EXISTS DESTINATION;

CREATE EXTERNAL TABLE SOURCE(MyID STRING, MyField STRING)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 's3://myPath/subPath/';

CREATE EXTERNAL TABLE DESTINATION(MyID STRING, MyField STRING)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 's3://anotherPath/subPath/';

INSERT OVERWRITE TABLE DESTINATION SELECT MyID, MyField FROM SOURCE;

这是堆栈跟踪:



谢谢。

最佳答案

JSON应该以{开头,而不是以数组([)

关于amazon-web-services - 使用JsonSerDe时找不到启动 token 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42572838/

10-12 23:36