При попытке получить объект Size of spark Row java Instrumentation.getObjectSize возвращает исключение Null Pointer Exception

Я пытаюсь получить размер строки искры, как это, следуя этому.

Как найти размер каждой строки в базе данных Apache spark sql и удалить строки, размер которых превышает пороговый размер в килобайтах

Преобразование в rdd дает гораздо больше проблем, поэтому я пытался использовать toSeq и переходил к получению размера объекта.

private[spark] def getEventSize(row: ssql.Row): Long = {
  ObjectSizeFetcher.getObjectSize(row.toSeq)
}

Хотя кажется, что он печатает данные, но выдает исключение Null Pointer для того же объекта.

oWrappedArray(1, 1, 2, 2, 2.0, Map(a -> 1), a, a, 0, 1, Map(1 -> 1), 1, 1, 1.0, 0.0, 0, 1, 1.0)

Исключение

java.lang.NullPointerException:
  at com.expediagroup.dataquality.polaris.batchprofiler.utils.ObjectSizeFetcher.getObjectSize(ObjectSizeFetcher.java:16)

Я использую Instrumentation.getObjectSize для получения размера строки искры

import java.lang.instrument.Instrumentation;

public class ObjectSizeFetcher {
    private static Instrumentation instrumentation;

    public static void premain(String args, Instrumentation inst) {
        instrumentation = inst;
    }

    public static long getObjectSize(Object o) {
        System.out.println("o" + o);
        if (o==null)
            return 0;
        return instrumentation.getObjectSize(o);
    }
}

Любая помощь приветствуется

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
12
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо этого я использовал import SizeEstimator, пока он работает.

import org.apache.spark.util.SizeEstimator
.
.
.
private[spark] def getEventSize(row: ssql.Row): Long = {   
   SizeEstimator.estimate(row)
}

Другие вопросы по теме