DUCKDB CLI-Tool zum Anzeigen von Parquet-Daten oder Schemas – stackoverflow.com/a/74260936/6563567
– shetti15
31. Oktober um 9:22 Uhr
Sal
Was ist Apache Parquet?
Apache Parquet ist ein binäres Dateiformat, das Daten spaltenweise speichert. Daten in einer Parquet-Datei ähneln einer Tabelle im RDBMS-Stil, in der Sie Spalten und Zeilen haben. Aber anstatt zeilenweise auf die Daten zuzugreifen, greifen Sie normalerweise spaltenweise darauf zu.
Apache Parquet ist eines der modernen Big-Data-Speicherformate. Es hat mehrere Vorteile, von denen einige sind:
Metadaten befinden sich am Ende der Datei: Ermöglicht das Generieren von Parquet-Dateien aus einem Datenstrom. (häufig in Big-Data-Szenarien)
Unterstützt von allen Apache Big Data-Produkten
Benötige ich Hadoop oder HDFS?
Nein. Parquet-Dateien können in jedem Dateisystem gespeichert werden, nicht nur in HDFS. Wie oben erwähnt, handelt es sich um ein Dateiformat. Es ist also genau wie jede andere Datei, wo es einen Namen und eine hat .Parkett Verlängerung. Was jedoch in Big-Data-Umgebungen normalerweise passiert, ist, dass ein Datensatz für noch mehr Effizienz in mehrere Parquet-Dateien aufgeteilt (oder partitioniert) wird.
Alle Apache Big Data-Produkte unterstützen standardmäßig Parquet-Dateien. Aus diesem Grund scheint es so, als ob es nur im Apache-Ökosystem existieren kann.
Wie kann ich Parquet-Dateien erstellen/lesen?
Wie bereits erwähnt, unterstützen alle aktuellen Apache-Big-Data-Produkte wie Hadoop, Hive, Spark usw. standardmäßig Parquet-Dateien.
Es ist also möglich, diese Systeme zu nutzen, um Parquet-Daten zu generieren oder zu lesen. Aber das ist alles andere als praktikabel. Stellen Sie sich vor, Sie müssten zum Lesen oder Erstellen einer CSV-Datei Hadoop/HDFS + Hive installieren und konfigurieren. Zum Glück gibt es andere Lösungen.
So erstellen Sie Ihre eigenen Parkettdateien:
In Java lesen Sie bitte meinen folgenden Beitrag: Parquet-Datei mit Java generieren
In .NET sehen Sie sich bitte die folgende Bibliothek an: parkett-dotnet
Möglicherweise. Aber es gibt nicht viele und sie sind meistens nicht gut dokumentiert. Dies liegt daran, dass Parquet ein sehr kompliziertes Dateiformat ist (ich konnte nicht einmal eine formale Definition finden). Die, die ich aufgelistet habe, sind die einzigen, die mir bekannt sind, während ich diese Antwort schreibe
Ich konnte an anderer Stelle keine Informationen zur Dateierweiterung für Parquet-Dateien finden. Ich denke, ich werde mitgehen .parquet 😉
– Tomasz Gandor
29. November 2019 um 9:42 Uhr
Der ParquetViewer konnte fast keine meiner Dateien öffnen .:(
– Shahar Prish
12. April 2021 um 15:24 Uhr
@ShaharPrish Ich würde ein Issue-Ticket im Repo mit einigen Beispieldateien öffnen.
– Sal ♦
13. April 2021 um 20:19 Uhr
Miau
Dies ist jetzt durch möglich Apache-Pfeilwas hilft, die Kommunikation/Übertragung zwischen verschiedenen Datenformaten zu vereinfachen, siehe meine Antwort hier oder die offizielle Dokumente im Fall von Python.
Im Grunde können Sie damit schnell Parkettdateien in Pandas lesen / schreiben DataFrame wie Mode, die Ihnen die Vorteile der Verwendung bietet notebooks um solche Dateien anzuzeigen und zu handhaben, als wäre es eine normale csv Datei.
BEARBEITEN:
Als Beispiel wird die neueste Version von gegeben Pandasvergewissere dich pyarrow ist installiert:
Dann können Sie einfach Pandas verwenden, um Parquet-Dateien zu manipulieren:
Ab 2022 ist dies die einzige Möglichkeit, die Parquet-Datei in Mac OS zu lesen, da Parquet-Tools veraltet sind und sogar die JAR-Datei nicht funktioniert.
– nomadSK25
18. November um 21:39 Uhr
nirolo
Neben der ausführlichen Antwort von @sal ist mir in diesem Zusammenhang noch eine weitere Frage begegnet:
Wie kann ich mit SQL auf die Daten in einer Parquet-Datei zugreifen?
Da wir uns hier immer noch im Windows-Kontext befinden, kenne ich nicht so viele Möglichkeiten, dies zu tun. Die besten Ergebnisse wurden durch die Verwendung erzielt Funke wie die SQL-Engine mit Python als Schnittstelle zu Spark. Ich gehe aber davon aus, dass die Zeppelin Environment funktioniert auch, habe das aber selbst noch nicht ausprobiert.
Nach der Einrichtung kann ich über Folgendes mit Parkett interagieren:
from os import walk
from pyspark.sql import SQLContext
sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)
parquetdir = r'C:\PATH\TO\YOUR\PARQUET\FILES'
# Getting all parquet files in a dir as spark contexts.
# There might be more easy ways to access single parquets, but I had nested dirs
dirpath, dirnames, filenames = next(walk(parquetdir), (None, [], []))
# for each parquet file, i.e. table in our database, spark creates a tempview with
# the respective table name equal the parquet filename
print('New tables available: \n')
for parquet in filenames:
print(parquet[:-8])
spark.read.parquet(parquetdir+'\\'+parquet).createOrReplaceTempView(parquet[:-8])
Sobald Sie Ihre Parkette auf diese Weise geladen haben, können Sie mit der Pyspark-API interagieren, z. B. über:
my_test_query = spark.sql("""
select
field1,
field2
from parquetfilename1
where
field1 = 'something'
""")
my_test_query.show()
Eugen
Vielleicht zu spät für diesen Thread, machen Sie einfach eine Ergänzung für alle, die Parquet-Dateien mit einer Desktop-Anwendung anzeigen möchten, die auf MAC oder Linux ausgeführt wird.
Es gibt eine Desktop-Anwendung zum Anzeigen Parkett und auch andere Daten im Binärformat wie ORK und AVRO. Es ist eine reine Java-Anwendung, die unter Linux, Mac und auch Windows ausgeführt werden kann. Bitte prüfen Bigdata-Dateibetrachter für Details.
Es unterstützt komplexe Datentypen wie Array, Map usw.
Enrico Detoma
Hier ist ein kurzer “Hack”, um es zu zeigen einzelner Tisch Parquet-Dateien mit Python in Windows (ich verwende Anaconda Python):
Erstellen Sie dieses einfache Skript parquet_viewer.py:
import pandas as pd
from pandasgui import show
import sys
import os
dfs = {}
for fn in sys.argv[1:]:
dfs[os.path.basename(fn)] = pd.read_parquet(fn)
show(**dfs)
Assoziieren .parquet Dateierweiterung, indem Sie diese Befehle als Administrator ausführen (natürlich müssen Sie die Pfade an Ihre Python-Installation anpassen):
Dadurch können Parkettdateien geöffnet werden, die mit Komprimierungsformaten (z. B. Zstd) komprimiert wurden, die vom .NET-Viewer in der Antwort von @Sal nicht unterstützt werden.
Verwenden where python um den Pfad zu Python zu finden. Führen Sie eine DOS-Admin-Eingabeaufforderung aus (nicht Powershell). Wenn bereits eine Dateizuordnung vorhanden ist, klicken Sie mit der rechten Maustaste auf eine beliebige .parquet Datei, auswählen Open With ... Choose Another App und auswählen parquetfile. Bei Dateien mit über 100 MB ist es sehr langsam.
– Contango
23. Januar um 14:56 Uhr
RaHuL VeNuGoPaL
Wenn wir auf dem Mac den Inhalt anzeigen möchten, können wir „Parquet-Tools“ installieren.
Parkett-Werkzeuge brauen installieren
Parquet-Tools-Head-Dateiname
Wir können die Parquet-Datei immer in einen Datenrahmen in Spark einlesen und den Inhalt sehen.
Sie haben spaltenförmige Formate und eignen sich besser für analytische Umgebungen, schreiben einmal und lesen viele. Parquet-Dateien eignen sich eher für leseintensive Anwendungen.
Verwenden where python um den Pfad zu Python zu finden. Führen Sie eine DOS-Admin-Eingabeaufforderung aus (nicht Powershell). Wenn bereits eine Dateizuordnung vorhanden ist, klicken Sie mit der rechten Maustaste auf eine beliebige .parquet Datei, auswählen Open With ... Choose Another App und auswählen parquetfile. Bei Dateien mit über 100 MB ist es sehr langsam.
– Contango
23. Januar um 14:56 Uhr
Benötige ich Hadoop oder HDFS, um sie anzuzeigen/zu erstellen/zu speichern?
Nein. Kann mit einer Bibliothek Ihrer bevorzugten Sprache durchgeführt werden. Beispiel: Mit Python können Sie verwenden. PyPfeil, SchnellParkett, Pandas.
Wie kann ich Parkettdateien einsehen? Wie kann ich Parkettdateien erstellen?
(GUI-Option für Windows, Linux, MAC)
Sie können verwenden Biber um Parkettdaten anzuzeigen, Metadaten und Statistiken anzuzeigen, SQL-Abfragen für eine oder mehrere Dateien auszuführen, neue Parkettdateien zu generieren usw.
DBeaver nutzt den DuckDB-Treiber, um Operationen an Parquet-Dateien durchzuführen.
Windows-Dienstprogramm zum Öffnen und Anzeigen von Parquet-Dateien: github.com/mukunku/ParquetViewer
– Sal
♦
19. Juni 2018 um 16:59 Uhr
DUCKDB CLI-Tool zum Anzeigen von Parquet-Daten oder Schemas – stackoverflow.com/a/74260936/6563567
– shetti15
31. Oktober um 9:22 Uhr