Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 16499|Απάντηση: 0

[Πηγή] Λήψη αρχείων απευθείας από το Hadoop HDFS

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 10/7/2019 2:20:11 μ.μ. | | |
Λήψη μεγάλων αρχείων από το HDFS

Πήρα ένα μεγάλο αρχείο (περίπου 2 GB) DataInputStream από τον πελάτη HDFS και πρέπει να το αποθηκεύσω ως αρχείο στον κεντρικό υπολογιστή μου.

Σκέφτομαι να χρησιμοποιήσω apache common IOUtils και να κάνω κάτι τέτοιο......


Έψαχνα για άλλες λύσεις που είναι καλύτερες από αυτήν. Το κύριο μέλημα είναι η χρήση buffering στην είσοδο και στο IOUtils.copy.

Για αρχεία μεγαλύτερα από 2 GB, συνιστάται η χρήση του IOUtils.copyLarge() (αν μιλάμε για το ίδιο IOUtils: org.apache.commons.io.IOUtils)

Η ρεπλίκα στο IOUtils χρησιμοποιεί το προεπιλεγμένο μέγεθος buffer των 4Kb (αν και μπορείτε να καθορίσετε ένα άλλο μέγεθος buffer ως παράμετρο).

Η διαφορά μεταξύ copy() και copyLarge() είναι ότι επιστρέφει το αποτέλεσμα.

Επειδή copy(), εάν η ροή είναι μεγαλύτερη από 2 GB, θα χρησιμοποιήσετε με επιτυχία το αντίγραφο, αλλά το αποτέλεσμα είναι -1.

Για το copyLarge() το αποτέλεσμα είναι ο αριθμός των byte που έχουν αντιγραφεί πλήρως.

Δείτε περισσότερα στην τεκμηρίωση εδώ:


Η σύνδεση με υπερσύνδεσμο είναι ορατή.



Πώς να ελέγξετε εάν ένα αρχείο έχει ληφθεί πλήρως μέσω του Spring Rest API

Δημιούργησα ένα απλό REST API για την εξυπηρέτηση αρχείων από hdfs (τα αρχεία είναι μεγάλα και δεν θέλω να τα αντιγράψω τοπικά).

Θέλω να καταγράψω τις πληροφορίες ότι η λήψη του αρχείου ολοκληρώθηκε με επιτυχία, δηλαδή να διαβάσω ολόκληρη τη ροή, αλλά δεν ξέρω πώς. Μπορώ να καταγράψω μόνο τις πληροφορίες που ξεκίνησε η λήψη του αρχείου.

Οποιαδήποτε βοήθεια θα εκτιμηθεί ιδιαίτερα.


Μπορείτε να δοκιμάσετε να δημιουργήσετε ένα περιτύλιγμα στο InputStream και να ενεργοποιήσετε μερικές σημαίες στη ροή close(close()).

Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το ProxyInputStream ως βάση:








Προηγούμενος:Μοιραστείτε μερικούς μετρημένους ιστότοπους για τη λήψη κωδικών επαλήθευσης SMS στο διαδίκτυο
Επόμενος:JS--Plugin: Το συνημμένο ανάπτυξης και υλοποίησης δέντρου μπορεί να μεταφορτωθεί!!
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com