Как остановить дамп ядра JVM с помощью Java Spark Parquet - PullRequest
1 голос
/ 14 февраля 2020

Возникла проблема со Spark, попытался создать набор данных «вручную», а затем записать его на паркет. Я остановился на этом примере, чтобы вы могли видеть, что происходит.

У меня есть два класса (они взяты из библиотеки, поэтому их нелегко изменить)

public class RawSearch implements Serializable {

    protected long timestamp;

    @Nullable
    protected List<RawItinerary> itineraries;

}

public class RawItinerary implements Serializable {

    protected long timestamp;

    @Nullable
    protected String originCityCode;

    @Nullable
    protected String destinationCityCode;

    protected int departDate;
    protected int returnDate;
    protected String currencyCode;

    protected double totalAmount;
    protected double totalTaxAmount;
    protected double totalSurchargeAmount;

    @Nullable
    protected String validatingCarrier;

    protected boolean multiCarrier;

    @Nullable
    protected String cabin;

    public boolean isPrivate() {
        return false;
    }

}

Если я попытаться создать RawSearch с помощью RawItinerary и записать в паркет, ядро ​​JVM выгрузит

       List<RawSearch> searches = new ArrayList<>();

        RawSearch rawSearch = new RawSearch();

        rawSearch.setTimestamp(System.currentTimeMillis());
        rawSearch.setItineraries(new ArrayList<>());
        searches.add(rawSearch);

        RawItinerary itinerary = new RawItinerary();

        itinerary.setCabin("Coach");
        itinerary.setCurrencyCode("USD");
        itinerary.setDepartDate(20200215);
        itinerary.setDestinationCityCode("EDI");
        itinerary.setMultiCarrier(false);
        itinerary.setOriginCityCode("LON");
        itinerary.setReturnDate(0);
        itinerary.setTimestamp(System.currentTimeMillis());
        itinerary.setValidatingCarrier("BA");

        rawSearch.getItineraries().add(itinerary);

        SparkSession sparkSession = SparkSession.builder().appName("Bob").master("local[1]").getOrCreate();

        Dataset<RawSearch> searchDataset = sparkSession.createDataset(searches, Encoders.bean(RawSearch.class));

        searchDataset.write()
                .parquet("/Users/graemewallace/Downloads/bob-" + System.currentTimeMillis());

        sparkSession.close();
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGBUS (0xa) at pc=0x0000000109adccda, pid=56878, tid=0x0000000000008903
#
# JRE version: Java(TM) SE Runtime Environment (8.0_241-b07) (build 1.8.0_241-b07)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.241-b07 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.dylib+0xdccda]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#

Если я избавлюсь от некоторых членов из RawItinerary - он начнет работать. Если я избавлюсь от метода isPrivate (), он начнет работать.

Кто-нибудь знает, что здесь происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...