Search in sources :

Example 1 with PrestoSparkStorageHandle

use of com.facebook.presto.spark.classloader_interface.PrestoSparkStorageHandle in project presto by prestodb.

the class PrestoSparkDiskPageInput method loadBroadcastTable.

private List<Page> loadBroadcastTable(List<PrestoSparkStorageHandle> broadcastTaskFilesInfo, TempStorage tempStorage, TempDataOperationContext tempDataOperationContext, UpdateMemory updateMemory) {
    try {
        CRC32 checksum = new CRC32();
        ImmutableList.Builder<Page> pages = ImmutableList.builder();
        List<PrestoSparkStorageHandle> broadcastTaskFilesInfoCopy = new ArrayList<>(broadcastTaskFilesInfo);
        shuffle(broadcastTaskFilesInfoCopy);
        for (PrestoSparkTaskOutput taskFileInfo : broadcastTaskFilesInfoCopy) {
            checksum.reset();
            PrestoSparkStorageHandle prestoSparkStorageHandle = (PrestoSparkStorageHandle) taskFileInfo;
            TempStorageHandle tempStorageHandle = tempStorage.deserialize(prestoSparkStorageHandle.getSerializedStorageHandle());
            log.info("Reading path: " + tempStorageHandle.toString());
            try (InputStream inputStream = tempStorage.open(tempDataOperationContext, tempStorageHandle);
                InputStreamSliceInput inputStreamSliceInput = new InputStreamSliceInput(inputStream)) {
                Iterator<SerializedPage> pagesIterator = readSerializedPages(inputStreamSliceInput);
                while (pagesIterator.hasNext()) {
                    SerializedPage serializedPage = pagesIterator.next();
                    checksum.update(serializedPage.getSlice().byteArray(), serializedPage.getSlice().byteArrayOffset(), serializedPage.getSlice().length());
                    Page deserializedPage = pagesSerde.deserialize(serializedPage);
                    pages.add(deserializedPage);
                    stagingBroadcastTableSizeInBytes += deserializedPage.getRetainedSizeInBytes();
                }
                updateMemory.update();
            }
            if (checksum.getValue() != prestoSparkStorageHandle.getChecksum()) {
                throw new PrestoException(STORAGE_ERROR, "Disk page checksum does not match. " + "Data seems to be corrupted on disk for file " + tempStorageHandle.toString());
            }
        }
        return pages.build();
    } catch (UncheckedIOException | IOException e) {
        throw new PrestoException(STORAGE_ERROR, "Unable to read data from disk: ", e);
    }
}
Also used : PrestoSparkTaskOutput(com.facebook.presto.spark.classloader_interface.PrestoSparkTaskOutput) CRC32(java.util.zip.CRC32) ImmutableList(com.google.common.collect.ImmutableList) ImmutableList.toImmutableList(com.google.common.collect.ImmutableList.toImmutableList) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) Page(com.facebook.presto.common.Page) SerializedPage(com.facebook.presto.spi.page.SerializedPage) PrestoException(com.facebook.presto.spi.PrestoException) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) TempStorageHandle(com.facebook.presto.spi.storage.TempStorageHandle) PrestoSparkStorageHandle(com.facebook.presto.spark.classloader_interface.PrestoSparkStorageHandle) InputStreamSliceInput(io.airlift.slice.InputStreamSliceInput) SerializedPage(com.facebook.presto.spi.page.SerializedPage)

Example 2 with PrestoSparkStorageHandle

use of com.facebook.presto.spark.classloader_interface.PrestoSparkStorageHandle in project presto by prestodb.

the class PrestoSparkStorageBasedBroadcastDependency method destroy.

@Override
public void destroy() {
    if (broadcastVariable == null) {
        return;
    }
    try {
        // Delete the files
        for (PrestoSparkStorageHandle diskPage : broadcastVariable.getValue()) {
            TempStorageHandle storageHandle = tempStorage.deserialize(diskPage.getSerializedStorageHandle());
            tempStorage.remove(tempDataOperationContext, storageHandle);
            log.info("Deleted broadcast spill file: " + storageHandle.toString());
        }
    } catch (IOException e) {
        throw new PrestoException(STORAGE_ERROR, "Unable to delete broadcast spill file", e);
    }
    // Destroy broadcast variable
    broadcastVariable.destroy();
}
Also used : TempStorageHandle(com.facebook.presto.spi.storage.TempStorageHandle) PrestoSparkStorageHandle(com.facebook.presto.spark.classloader_interface.PrestoSparkStorageHandle) PrestoException(com.facebook.presto.spi.PrestoException) IOException(java.io.IOException)

Aggregations

PrestoSparkStorageHandle (com.facebook.presto.spark.classloader_interface.PrestoSparkStorageHandle)2 PrestoException (com.facebook.presto.spi.PrestoException)2 TempStorageHandle (com.facebook.presto.spi.storage.TempStorageHandle)2 IOException (java.io.IOException)2 Page (com.facebook.presto.common.Page)1 PrestoSparkTaskOutput (com.facebook.presto.spark.classloader_interface.PrestoSparkTaskOutput)1 SerializedPage (com.facebook.presto.spi.page.SerializedPage)1 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableList.toImmutableList (com.google.common.collect.ImmutableList.toImmutableList)1 InputStreamSliceInput (io.airlift.slice.InputStreamSliceInput)1 InputStream (java.io.InputStream)1 UncheckedIOException (java.io.UncheckedIOException)1 ArrayList (java.util.ArrayList)1 CRC32 (java.util.zip.CRC32)1