kat*_*nai 5 hive amazon-web-services amazon-emr emr
我正在尝试从 S3 导入 JSON 数据,并在进行一些查询后,再次将输出作为 JSON 格式导出到 S3。但是,我在 EMR 集群上的 hive 步骤中收到“org.apache.hadoop.hive.serde2.SerDeException:java.io.IOException:未在预期位置找到启动令牌”错误。为了了解问题所在,我简化了 Hive 脚本和 JSON 数据,但它一直给出相同的错误。我怎么解决这个问题?
集群配置:
版本:emr-5.3.1
蜂巢版本:2.1.1
Hadoop 发行版:Amazon 2.7.3
服务角色:EMR_DefaultRole
主实例类型:m4.large
简化后的 JSON 数据内容:
[{"MyID":"FOO123","MyField":"FOO"},{"MyID":"BAR123","MyField":"BAR"}]
Run Code Online (Sandbox Code Playgroud)
蜂巢脚本:
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;
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪:
Vertex failed, vertexName=Map 4, vertexId=vertex_1278452616863_0001_1_00,diagnostics=[Task failed, taskId=task_1278452616863,diagnostics=[TaskAttempt 0 failed, info=[Error: Error while running task ( failure ): 456time.16.167.java java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing writable [{"MyID":"FOO123","MyField":"FOO"},{"MyID": "BAR123","MyField":"BAR"}] 在 org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor(TezProcessor.java:211) 在 org.apache.hadoop.hive.ql.exec .tez.TezProcessor.run(TezProcessor.java:168) 在 org.apache.tez.runtime.LogicalIOProcessorRuntimeTask.run(LogicalIOProcessorRuntimeTask.java:370) 在 org.apache.tez。runtime.task.TaskRunner2Callable$1.run(TaskRunner2Callable.java:73) at org.apache.tez.runtime.task.TaskRunner2Callable$1.run(TaskRunner2Callable.java:61) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) 在 org.apache.tez.runtime.task.TaskRunner2Callable.callInternal( TaskRunner2Callable.java:61) 在 org.apache.tez.runtime.task.TaskRunner2Callable.callInternal(TaskRunner2Callable.java:37) 在 org.apache.tez.common.CallableWithNdc.call(CallableWithNdc.java:36) 在 java.util .concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent。ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.RuntimeException:org.apache.hadoop.hive.ql.metadata.HiveException:在 org.apache.hadoop 处理可写 [{"MyID":"FOO123","MyField":"FOO"},{"MyID":"BAR123","MyField":"BAR"}] 时出现 Hive 运行时错误。 hive.ql.exec.tez.MapRecordSource.processRow(MapRecordSource.java:95) 在 org.apache.hadoop.hive.ql.exec.tez.MapRecordSource.pushRecord(MapRecordSource.java:70) 在 org.apache.hadoop。 hive.ql.exec.tez.MapRecordProcessor.run(MapRecordProcessor.java:383) at org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor(TezProcessor.java:185) ... 14 更多:org.apache.hadoop.hive.ql.metadata。HiveException:在 org.apache 处理可写 [{"MyID":"FOO123","MyField":"FOO"},{"MyID":"BAR123","MyField":"BAR"}] 时出现 Hive 运行时错误。 hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:497) at org.apache.hadoop.hive.ql.exec.tez.MapRecordSource.processRow(MapRecordSource.java:86) ... 17 more 引起: org.apache.hadoop.hive.serde2.SerDeException: java.io.IOException: 在 org.apache.hive.hcatalog.data.JsonSerDe.deserialize(JsonSerDe.java:183) 的预期位置找不到启动令牌.hadoop.hive.ql.exec.MapOperator$MapOpCtx.readRow(MapOperator.java:128) 在 org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.access$200(MapOperator.java:92) 在 org. apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:488) ... 更多 18 个原因:java.io.IOException:在 org.apache.hive.hcatalog.data.JsonSerDe.deserialize(JsonSerDe.java:169) ... 21 更多
谢谢。
| 归档时间: |
|
| 查看次数: |
3683 次 |
| 最近记录: |