an34mem
Goto Top

Problem mit Flow PHP Parquet - Class - Vielleicht weiß jemand weiter

Problem mit Flow PHP Parquet - Class "Flow\Filesystem\Stream\ResourceStream" not found

System:
Windows 10/11
XAMPP mit PHP 8.2.12
Flow PHP Parquet installiert über Composer

Problem:
Ich versuche eine Parquet-Datei mit der Flow PHP Parquet-Bibliothek zu lesen. Die Datei ist vorhanden, aber beim Öffnen des Streams bekomme ich folgenden Fehler:

DEBUG: Erwarteter Datei-Pfad: C:\pfad\zu\meinem\projekt\test.parquet
DEBUG: Datei wurde gefunden.
DEBUG: Datei ist lesbar.
DEBUG: Versuche Datei-Stream zu öffnen...
DEBUG: Datei-Stream erfolgreich geöffnet.
DEBUG: Stream-Typ: resource

Fatal error: Uncaught Error: Class "Flow\Filesystem\Stream\ResourceStream" not found in C:\pfad\zu\meinem\projekt\index.php:43  
Stack trace:
#0 {main} thrown in C:\pfad\zu\meinem\projekt\index.php on line 43

Was wurde bereits getestet?

✅ Überprüfung, ob die Datei existiert und lesbar ist
✅ Unterschiedliche Methoden zum Öffnen der Datei getestet
✅ Alternative Flow-Klassen wie FileStream ausprobiert (führt zu ähnlichen Fehlern)
✅ Neuinstallation der Flow-Bibliothek mit Composer (composer require flow-php/parquet)
✅ composer dump-autoload ausgeführt, um sicherzustellen, dass alle Klassen korrekt geladen sind
✅ Sowohl komprimierte als auch unkomprimierte Parquet-Dateien getestet – ohne Erfolg

<?php
declare(strict_types=1);

require __DIR__ . '/vendor/autoload.php';  

use Flow\Parquet\Reader;
use Flow\Filesystem\Stream\ResourceStream;

// Definiere den Pfad zur Datei
$filePath = __DIR__ . DIRECTORY_SEPARATOR . "test.parquet";  

// Debug: Pfad ausgeben
echo "DEBUG: Erwarteter Datei-Pfad: $filePath\n";  

// Überprüfe, ob die Datei existiert
if (!file_exists($filePath)) {
    die("FEHLER: Datei wurde nicht gefunden: $filePath\n");  
} else {
    echo "DEBUG: Datei wurde gefunden.\n";  
}

// Überprüfe, ob die Datei lesbar ist
if (!is_readable($filePath)) {
    die("FEHLER: Datei existiert, ist aber nicht lesbar: $filePath\n");  
} else {
    echo "DEBUG: Datei ist lesbar.\n";  
}

try {
    // Datei-Stream öffnen
    echo "DEBUG: Versuche Datei-Stream zu öffnen...\n";  
    $streamResource = fopen($filePath, 'rb');  

    if (!$streamResource) {
        die("FEHLER: Konnte Datei-Stream nicht öffnen.\n");  
    }
    echo "DEBUG: Datei-Stream erfolgreich geöffnet.\n";  

    // Debug: Zeige Ressourcentyp an
    echo "DEBUG: Stream-Typ: " . gettype($streamResource) . "\n";  

    // Erstelle einen ResourceStream für Flow\Parquet
    $fileStream = new ResourceStream($streamResource);

    if (!$fileStream) {
        die("FEHLER: Konnte ResourceStream nicht erstellen.\n");  
    }
    echo "DEBUG: ResourceStream erfolgreich erstellt.\n";  

    // Parquet-Reader initialisieren
    echo "DEBUG: Initialisiere Parquet-Reader...\n";  
    $reader = new Reader();

    // Versuche, die Parquet-Datei zu lesen
    echo "DEBUG: Versuche Parquet-Datei zu lesen...\n";  
    $parquetFile = $reader->readStream($fileStream);

    echo "DEBUG: Parquet-Datei erfolgreich gelesen.\n";  

    // Debug: Anzahl der Zeilen ausgeben
    echo "DEBUG: Anzahl gelesener Zeilen: " . count($parquetFile->values()) . "\n";  

    // Daten ausgeben
    foreach ($parquetFile->values() as $row) {
        echo "<pre>";  
        print_r($row);
        echo "</pre>";  
    }
} catch (Exception $e) {
    die("FEHLER: Ausnahme beim Lesen der Parquet-Datei: " . $e->getMessage() . "\n");  
}
?>

Fragen:

  • Gibt es eine funktionierende Möglichkeit, eine Parquet-Datei mit Flow PHP Parquet korrekt zu öffnen?
  • Muss eine spezielle Klasse aus der Flow-Bibliothek importiert werden, um den Stream zu erstellen?
  • Macht es einen Unterschied, ob die Parquet-Datei komprimiert oder unkomprimiert ist, oder sollte das egal sein?

Vielen Dank für eure Hilfe! 😊

Content-ID: 671522

Url: https://administrator.de/forum/problem-mit-flow-php-parquet-class-vielleicht-weiss-jemand-weiter-671522.html

Ausgedruckt am: 21.02.2025 um 17:02 Uhr

Michi91
Michi91 20.02.2025 aktualisiert um 16:09:52 Uhr
Goto Top
Ich glaube nicht das es an der Parquet Datei liegt, sondern am Parser.
Durchsuch doch mal deinen /vendor/ ordner ob es dort eine Klasse ResourceStream gibt.

Ansonsten, https://github.com/flow-php/parquet/blob/1.x/src/Flow/Parquet/Reader.php --> Statt des StreamReaders gibts scheinbar auch einen Filebased Reader ;)
AN34Mem
AN34Mem 20.02.2025 um 18:43:36 Uhr
Goto Top
Danke Michi91 für die Info. Ich werde mir einmal php-parquet anschauen vielleicht ist das besser....
Gruß.