- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我对 Hive 和 ElasticMapreduce 还很陌生,目前我遇到了一个特定的问题。在包含数十亿行 JSON 对象的表上运行 Hive 语句时,只要其中一行是无效的/格式错误的 JSON,MapReduce 作业就会崩溃。
异常:
java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing writable {"ip":"39488130","cdate":"2012-08-09","cdate_ts":"2012-08-09 17:06:41","country":"SA","city":"Riyadh","mid":"6666276582211270592","osversion":"5.1.
1
at org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.java:161)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:441)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:377)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing writable {"ip":"39488130","cdate":"2012-08-09","cdate_ts":"2012-08-09 17:06:41","country":"SA","city":"Riyadh","mid":"6666276582211270592","osversion":"5.1.1
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:524)
at org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.java:143)
... 8 more
Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string near
at com.google.gson.Streams.parse(Streams.java:51)
at com.google.gson.JsonParser.parse(JsonParser.java:83)
at com.google.gson.JsonParser.parse(JsonParser.java:58)
at com.google.gson.JsonParser.parse(JsonParser.java:44)
at com.amazon.elasticmapreduce.JsonSerde.deserialize(Unknown Source)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:510)
... 9 more
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated string near
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1110)
at com.google.gson.stream.JsonReader.nextString(JsonReader.java:967)
at com.google.gson.stream.JsonReader.nextValue(JsonReader.java:802)
at com.google.gson.stream.JsonReader.objectValue(JsonReader.java:782)
at com.google.gson.stream.JsonReader.quickPeek(JsonReader.java:377)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:340)
at com.google.gson.Streams.parseRecursive(Streams.java:60)
at com.google.gson.Streams.parseRecursive(Streams.java:83)
at com.google.gson.Streams.parse(Streams.java:40)
... 14 more
我这样创建表格:
CREATE EXTERNAL TABLE IF NOT EXISTS table1 (
column1 string,
column2 string
)
PARTITIONED BY (year string, month string)
ROW FORMAT SERDE 'com.amazon.elasticmapreduce.JsonSerde'
WITH SERDEPROPERTIES ('paths'='c1, c2')
LOCATION 's3://mybucket/table1';
我该怎么做才能防止崩溃?忽略格式错误的 JSON 对象/字符串会很好,因为它是格式错误的十亿分之一。
提前感谢您的帮助。最好的,萨沙
最佳答案
通过更改行格式中使用的类并添加“格式错误”属性,您可以使您的表创建工作在格式错误的 JSON 上:
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ("ignore.malformed.json" = "true")
LOCATION ...
使用“hive-site.xml”中的“hive.aux.jars.path”属性或“ADD JAR”Hive 指令包含 JAR。您可以找到 JAR here , 或者从 this source 编译它.
关于java - 配置单元/ElasticMapreduce : How bring JsonSerDe to ignore malformed JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14137688/
我想知道,根据您选择的EC2服务器的实例类型,映射器和简化器的数量是否会有所不同?我发现大型实例正在使用3个映射器和1个reducer。其他所有类型(例如xLarge实例)是否相同?我知道我可以通过引
我通过 boto API 遇到过几次来自 Amazon EMR 的速率限制,如下所示: boto.exception.EmrResponseError: EmrResponseError: 400 B
如何更改此配置?对于我的应用程序,64/128 的拆分大小对我来说太多了, 例如,我希望拆分大小为 16 mb。 我该怎么做? 最佳答案 您可以通过设置 fs.s3n.block.size 来更改默认
我使用 ElasticMapReduce 有一段时间了。这很方便,但我无法运行 HBase,因为 Hadoop 集群只是暂时可用(我在 HBase and Hadoop 上问过一些相关的问题)。 所以
我正在使用 AWS DataPipeline 运行创建 EMR 集群的 aws-cli 命令,但在运行该命令时出现以下错误: user ... is not authorized to perform
如何访问 S3 的以下文件夹中由其他人拥有的文件 s3n://elasticmapreduce/samples/wordcount/input 最佳答案 s3n://elasticmapreduce/
我对 Hive 和 ElasticMapreduce 还很陌生,目前我遇到了一个特定的问题。在包含数十亿行 JSON 对象的表上运行 Hive 语句时,只要其中一行是无效的/格式错误的 JSON,Ma
我目前有 Flink 设置并且有一个在 EMR 上运行的作业,我现在正尝试通过将指标发送到 prometheus 来添加监控。 我遇到了在 EMR 上运行 Flink 的问题。我正在使用 Terraf
尽管我的研究告诉我这是亚马逊内部的错误,但我一直收到此错误。我不知道从哪里开始处理这个错误,或者是否有什么我可以做的来帮助它。 事实上,我一直收到它,这让我认为我的脚本有问题。这是: { "Des
我是一名优秀的程序员,十分优秀!