我正在尝试从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/