【问题标题】:Apache Pig type castingApache Pig 类型转换
【发布时间】:2016-04-19 07:44:54
【问题描述】:

我正在使用 Apache Pig 进行一些数据处理工作。我写了一个像这样的猪拉丁脚本:

raw = Load 'data.csv' USING MyLoader();
repaired = FOREACH raw GENERATE MyRepairFunc(*);
filtered = FOREACH repaired GENERATE $0 AS name:chararray, $3 AS age:int;
DUMP filtered;

猪出现错误:

java.lang.ClassCastException:org.apache.pig.data.DataByteArray 不能转换为 java.lang.Integer 在 org.apache.pig.backend.hadoop.HDataType.getWritableComparableTypes(HDataType.java:115) 在 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapReduce$Map.collect(PigGenericMapReduce.java:124) 在 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapBase.runPipeline(PigGenericMapBase.java:281) 在 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapBase.map(PigGenericMapBase.java:274) 在 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapBase.map(PigGenericMapBase.java:64) 在 org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) 在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:370) 在 org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)

这是一个数据转换问题。由于原始数据可能包含一些损坏的记录,因此在加载时我无法确定架构,以防数据丢失。

那我应该怎么做才能解决这个问题?非常感谢

【问题讨论】:

    标签: hadoop apache-pig


    【解决方案1】:

    您应该在数据分析之前修复您的原始数据(数据清理)。

    有一个 pig UDF 并尝试用预期的模式清理原始数据,但没有合并到主分支中。 PIG-3735UDF 以预期模式清理脏数据

    您可以尝试使用自己喜欢的工具清理原始数据。 请参考推荐的工具 https://infocus.emc.com/david_dietrich/the-dirty-little-secret-of-big-data-projects/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2013-11-15
      • 2020-09-29
      • 1970-01-01
      • 2018-08-03
      相关资源
      最近更新 更多