Ich muss einige Dateien in einem S3-Bucket mit Hive verarbeiten. Das Problem ist, dass Hive die Buckets anscheinend nicht gerne als Ordner verwendet. Daher habe ich beschlossen, einen Ordner in einem anderen Bucket zu erstellen und die Dateien über s3cmd dorthin zu kopieren.
Dies ist mein Befehl:
s3cmd -v cp s3://main.bucket/\* s3://temp.bucket/input/
s3cmd meldet dann sofort, dass ich X Dateien zu übertragen habe (normalerweise etwa 5k++) und stürzt dann, nachdem eine Datei kopiert wurde, mit der folgenden Fehlermeldung ab:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
An unexpected error has occurred.
Please report the following lines to:
[email protected]
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Problem: KeyError: 'dest_name'
S3cmd: 1.0.1
Traceback (most recent call last):
File "/usr/local/bin/s3cmd", line 2006, in <module>
main()
File "/usr/local/bin/s3cmd", line 1950, in main
cmd_func(args)
File "/usr/local/bin/s3cmd", line 614, in cmd_cp
subcmd_cp_mv(args, s3.object_copy, "copy", "File %(src)s copied to %(dst)s")
File "/usr/local/bin/s3cmd", line 604, in subcmd_cp_mv
dst_uri = S3Uri(item['dest_name'])
KeyError: 'dest_name'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
An unexpected error has occurred.
Please report the above lines to:
[email protected]
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Nun, das ist einfach nur Mist.
Da ich dachte, dass das Problem bei der Bucket-zu-Bucket-Übertragung liegt, habe ich beschlossen, einen Ordner innerhalb des main.bucket zu erstellen und einfach alles dorthin zu kopieren, ohne mich darum zu kümmern, ob der Ordner, in den alles kopiert werden soll, ebenfalls kopiert wird und dadurch eine Schleife oder so etwas entsteht, weil ich zu diesem Zeitpunkt mit meinem Latein am Ende war.
Der neue Befehl lautet:
s3cmd -v cp s3://main.bucket/\* s3://main.bucket/111a/
Wieder wurde nur eine Datei kopiert und derselbe Fehler angezeigt.
Was könnte das bedeuten? Wie behebe ich das?
Danke.
PS: Wenn alles andere fehlschlägt, könnte ich es vermutlich über die GUI von AWS machen, aber jedes Kontrollkästchen manuell zu aktivieren ist mühsam. Meines Wissens werden die oben aktivierten Dateien dummerweise vergessen, wenn Sie lange genug nach unten scrollen, und Sie müssen es im Schneckentempo erledigen.
Wenn es eine Methode gäbe, sie alle auf einmal auszuwählen und sie in ein neues Verzeichnis zu kopieren und einzufügen, wäre das großartig.
Antwort1
Sie verwenden eine sehr alte Version von s3cmd. Ich glaube, dieser Fehler wurde in den letzten Jahren behoben. Bitte versuchen Sie es erneut mit dem Upstream-Master-Zweig github.com/s3tools/s3cmd. Ab heute ist 1.5.0-rc1 die aktuellste Version.