Spark Mongo Hadoop Connector不映射数据

时间:2016-10-13 00:06:08

标签: apache-spark mongodb-hadoop

我正在尝试将来自mongodb-hadoop连接器的数据映射到spark应用程序中。我之前没有其他错误所以我假设与mongodb的连接成功。我使用以下代码进行映射:

<%= f.fields_for :detallepromo do |builder| %>
  <% if builder.Monto == nil %>

  <div class="well center-block">
    <div class="form-group">
      <h3 class="col-md-5">Promocion Base:</h3>
    </div>


    <div class="form-group">
      <%= builder.label :Monto,"Monto:", class: "control-label col-md-2" %>

      <div class="col-md-3">
        <%= builder.text_field :Monto, class: "form-control  mensaje_fechafinal" %>
      </div>
  <% end %>
<% end >

代码失败了:

JavaRDD<AppLog> logs = documents.map(

  new Function<Tuple2<Object, BSONObject>, AppLog>() {

      public AppLog call(final Tuple2<Object, BSONObject> tuple) {
          AppLog log = new AppLog();
          BSONObject header =
            (BSONObject) tuple._2().get("headers");

          log.setTarget((String) header.get("target"));
          log.setAction((String) header.get("action"));

          return log;
      }
  }
);

1 个答案:

答案 0 :(得分:1)

在mapper类中使用的变量之一具有null值。

什么可以为空?

  • tuple参数
  • 元组的第二个元素
  • 或元组的第二个元素
  • 中没有headers个对象

我们没有您的测试数据,您必须自己检查什么可以为null。这不是Spark的问题,而是你的内部代码。

只需调试您的应用程序或执行if-else块,您就会发现什么值为null。如果元组参数出现问题,您可以documents.filter (x -> x != null).map (...)过滤RDD中所有可为空的值