BigData - Umgang mit großen Datenmengen bei DaRUS

Für einen reibungslosen Upload von sehr großen Dateien auf DaRUS empfehlen wir die Nutzung der API statt der Weboberfläche und einen direkten Upload auf das Datenbackend. Der DVUploader implementiert die einzelnen Schritte.

Upload von Dateien

Upload über die Weboberfläche

DaRUS - bzw. die darunter liegende Software Dataverse - bietet eine komfortable Web-Oberfläche um Datensätze anzulegen und Dateien hochzuladen, der sehr gut für Dateien bis zu 2 GB Größe funktioniert.

Nach dem Upload können weitere Informationen (Beschreibung, Tags, Ordnerstruktur) zu den Dateien hinzugefügt werden.

Upload über die API

Für Dateien bis zu etwa 100 GB kann die DaRUS-API genutzt werden. Dafür benötigen Sie einen API-Key und die ID des Datensatzes, dem die Datei hinzugefügt werden soll.

$API_TOKEN: Ihr API-Token, das Sie in ihrem User Account erzeugen können.
$SERVER_URL: https://darus.uni-stuttgart.de (Produktivsystem) oder https://demodarus.izus.uni-stuttgart.de (Testsystem)
$PERSISTENT_ID: ID des Datensatzes, zu finden innerhalb der URL der Datensatzseite (z.B. doi:10.18419/darus-444) 

curl -H X-Dataverse-key:$API_TOKEN -X POST -F "file=@$FILENAME" -F 'jsonData={"description":"<description>","directoryLabel":"<directory>","categories":<categories>, "restrict":"false"}' "$SERVER_URL/api/datasets/:persistentId/add?persistentId=$PERSISTENT_ID"

Gleichzeitig können (aber müssen nicht) Informationen über die Datei übermittelt werden:

  • <description>: Textuelle Beschreibung der Datei
  • <directory>: Ergänzen einer Ordnerstruktur, z.B. /images/subdir
  • <categories>: Liste von Tags, z.B. ["Data","Documentation", "Code"]
  • mit "restrict":"true" kann eine Datei mit einem Zugriffsschutz versehen werden

Alternativ zur direkten Ansprache der API können auch Bibliotheken wie pyDataverse oder Tools wie die DaRUS-App genutzt werden.

Direkter Upload auf das Datenbackend

Um Timeouts des Dataverse-Servers komplett zu vermeiden, können sehr große Dateien auch direkt auf das S3-Backend hochgeladen werden. Voraussetzung dafür ist aber, dass der direct upload für das entsprechende Dataverse aktiviert ist. Bitte sprechen Sie ihren lokalen Administrator an, falls Sie sich nicht sicher sind.

Der Upload geschieht dann in drei Schritten:

$API_TOKEN: Ihr API-Token, das Sie in ihrem User Account erzeugen können.
$SERVER_URL: https://darus.uni-stuttgart.de (Produktivsystem) oder https://demodarus.izus.uni-stuttgart.de (Testsystem)
$PERSISTENT_ID: ID des Datensatzes, zu finden innerhalb der URL der Datensatzseite (z.B. doi:10.18419/darus-444) 

  1. One-Time-Upload-Url erzeugen: 
    curl -H "X-Dataverse-key: $API_TOKEN" -X GET "$SERVER_URL/api/datasets/:persistentId/uploadsid/?persistentId=$PERSISTENT_ID"
    Aus der JSON-Antwort benötigt man im Folgenden die "url" und den "storageIdentifier"
  2. Direkter Upload der Datei auf den S3:  
    curl -X PUT -H "x-amz-tagging: dv-state=temp" --upload-file <path-to-file> "<url>"
    Dadurch wird die Datei in Datenbackend hochgeladen, aber zunächst noch als temporär gekennzeichnet und noch nicht mit dem Datensatz verknüpft. Dieser Upload kann je nach Dateigröße lange dauern. 
  3. Registrieren der Datei bei Dataverse:
    curl -H "X-Dataverse-key: $API_TOKEN" -X POST -F 'jsonData={"description":"<description>", "storageIdentifier": "<storageIdentifier>", "fileName": "<filename>", "mimeType": "<mimeType>", "md5Hash": "<md5sum>", "fileSize": "<filesize>"}' "$SERVER_URL/api/datasets/:persistentId/add?persistentId=$PERSISTENT_ID" 
    Da die Dateiinformationen nicht mehr von Dataverse selber ermittelt werden können, müssen Sie nun als Metadaten mit übergeben werden:
    •  <description>: textuelle Beschreibung der Datei
    • <storageIdentifier>: Rückgabe beim Erzeugen der One-Time-Upload-URL
    • <mimeType>: Dateityp der Datei als MIME-Type (Liste gängiger MIME-Types, vollständige Liste aller MIME-Types
    • <md5sum> md5Hash der Datei, bekommt man unter Linux md5sum <filename> 
    • <filesize>: Dateigröße in Byte, unter Linux ermittelbar mit ls -l <filename>

Wem der manuelle Upload zu aufwändig ist, kann auch den DV-Uploader mit der Option -directupload nutzen:

 

Nutzung des DVUploader

Der Dataverse-Uploader ist ein Java-basiertes Kommandozeilen-Tool, das beim Upload insbesondere sehr vieler oder auch sehr großer Dateien hilft und auch den direkten Upload auf unser Datenbackend unterstützt. Es wird von der Dataverse-Community entwickelt und kann als JAR-File heruntergeladen werden

Für die Nutzung muss ein API-Token erzeugt werden und die ID des Datensatzes bekannt sein, zu dem die Datei(en´) hochgeladen werden sollen.

java -jar DVUploader-v1.0.0.jar -server=<ServerUrl> -did=<Dataset DOI> -key=<User's API Key> <file or directory list>

<User's API Key>: Ihr API-Token, das Sie in ihrem User Account erzeugen können.
<ServerUrl>: https://darus.uni-stuttgart.de (Produktivsystem) oder https://demodarus.izus.uni-stuttgart.de (Testsystem)
<Dataset DOI>: ID des Datensatzes, zu finden innerhalb der URL der Datensatzseite (z.B. doi:10.18419/darus-444) 

Für den direkten Upload auf das Datenbackend verwenden Sie zusätzlich noch die Option -directupload

java -jar DVUploader-v1.0.0.jar -server=<ServerUrl> -did=<Dataset DOI> -key=<User's API Key> -directupload <file or directory list>

 

 

Zum Seitenanfang