美文网首页
spark查orc格式数据偶尔报错NullPointerExce

spark查orc格式数据偶尔报错NullPointerExce

作者: 李斯不怨 | 来源:发表于2020-04-03 15:48 被阅读0次

spark查orc格式的数据有时会报这个错

Caused by: java.lang.NullPointerException

at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat$BISplitStrategy.getSplits(OrcInputFormat.java:560)

at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.generateSplitsInfo(OrcInputFormat.java:1010)

... 47 more

跟进代码

org.apache.hadoop.hive.ql.io.orc.OrcInputFormat

staticenum SplitStrategyKind {

    HYBRID,

    BI,

    ETL

  }

...

    Context(Configuration conf) {

      this.conf = conf;

      minSize = conf.getLong(MIN_SPLIT_SIZE, DEFAULT_MIN_SPLIT_SIZE);

      maxSize = conf.getLong(MAX_SPLIT_SIZE, DEFAULT_MAX_SPLIT_SIZE);

      String ss = conf.get(ConfVars.HIVE_ORC_SPLIT_STRATEGY.varname);

      if(ss ==null|| ss.equals(SplitStrategyKind.HYBRID.name())) {

        splitStrategyKind = SplitStrategyKind.HYBRID;

      } else {

        LOG.info("Enforcing " + ss + " ORC split strategy");

        splitStrategyKind = SplitStrategyKind.valueOf(ss);

      }

...

        switch(context.splitStrategyKind) {

          case BI:

            // BI strategy requested through configsplitStrategy =new BISplitStrategy(context, fs, dir, children, isOriginal,

                deltas, covered);

            break;

          case ETL:

            // ETL strategy requested through configsplitStrategy =new ETLSplitStrategy(context, fs, dir, children, isOriginal,

                deltas, covered);

            break;

          default:

            // HYBRID strategyif(avgFileSize > context.maxSize) {

              splitStrategy =new ETLSplitStrategy(context, fs, dir, children, isOriginal, deltas,

                  covered);

            } else {

              splitStrategy =new BISplitStrategy(context, fs, dir, children, isOriginal, deltas,

                  covered);

            }

            break;

        }

org.apache.hadoop.hive.conf.HiveConf.ConfVars

HIVE_ORC_SPLIT_STRATEGY("hive.exec.orc.split.strategy", "HYBRID",newStringSet("HYBRID", "BI", "ETL"),

        "This is not a user level config. BI strategy is used when the requirement is to spend less time in split generation" +        " as opposed to query execution (split generation does not read or cache file footers)." +        " ETL strategy is used when spending little more time in split generation is acceptable" +        " (split generation reads and caches file footers). HYBRID chooses between the above strategies" +        " based on heuristics."),

The HYBRID mode reads the footers for all files if there are fewer files than expected mapper count, switching over to generating 1 split per file if the average file sizes are smaller than the default HDFS blocksize. ETL strategy always reads the ORC footers before generating splits, while the BI strategy generates per-file splits fast without reading any data from HDFS.

可见hive.exec.orc.split.strategy默认是HYBRID,HYBRID时如果不满足

if (avgFileSize > context.maxSize) {

splitStrategy = new BISplitStrategy(context, fs, dir, children, isOriginal, deltas,

covered);

报错的就是BISplitStrategy,具体这个类为什么报错还没有细看,不过可以修改设置避免这个问题

set hive.exec.orc.split.strategy=ETL

问题暂时解决,未完待续;

相关文章

  • spark查orc格式数据偶尔报错NullPointerExce

    spark查orc格式的数据有时会报这个错 Caused by: java.lang.NullPointerExc...

  • java.lang.NullPointerException:n

    这几天线上一直有npe异常的告警,通过查日志发现,报错信息为: java.lang.NullPointerExce...

  • 今日份打卡 136/365

    技术文章Presto对ORC格式的优化ORC格式对数据的解码分为两个步骤:第一步是使用传统的压缩格式(例如,gzi...

  • ORC File

    ORC 文件是在hive 0.11.0开始支持。 ORC 文件格式 相对于其他的文件格式,ORC文件格式有以下优点...

  • Spark ORC文件

    一. ORC文件的格式 1. 什么是orc文件 ORC文件, 全称Optimized Row Columnar, ...

  • Hive表支持多种格式

    不同的分区有不同的数据存储格式(例如:parquet、json、avro、orc等) 可以通过修改分区的格式实现。...

  • Metastore格式和分隔符

     Hive目前支持的数据格式包括Text File、SequenceFile、RCFile、Avro、ORC 和P...

  • Hive数据格式-ORC

    普通的存储格式,比如我们表格中有abc三列,像mysql按行存储则如下所示 大数据引擎存储中,大部分都是采用列式存...

  • Java 图片Exif 和 JFIF转 jpeg解决办法

    今天公司报错如下: 原因: 查了stackoverflow这是因为JDK本身的一个BUG,转换出错。可以查看Orc...

  • carbondata 编译部署

    简介 carbondata 是华为开源的一种数据格式(如textfile,parquet,ORC……),号称实现大...

网友评论

      本文标题:spark查orc格式数据偶尔报错NullPointerExce

      本文链接:https://www.haomeiwen.com/subject/btzhphtx.html