У меня есть 100 файлов npz, содержащих numpy массивы в хранилище google. У меня есть установка dataproc с jupyter, и я пытаюсь прочитать все массивы numpy в искровом RDD. Каков наилучший способ загрузки массивов numpy из хранилища google в pyspark? Есть ли простой способ, например, np.load("gs://path/to/array.npz")
загрузить массив numpy, а затем сделать sc.parallelize
на нем?чтение массива numy из GCS в искру
ответ
Если вы планируете масштабировать в конце концов, вы захотите использовать распределенные методы ввода в SparkContext
, а не выполнять локальную загрузку файла из программы драйвера, используя sc.parallelize
. Похоже, вы должны прочитать каждый из файлов нетронутых, хотя, так что в вашем случае, если вы хотите:
npz_rdd = sc.binaryFiles("gs://path/to/directory/containing/files/")
Или вы можете также указать отдельные файлы, если вы хотите, но тогда вы просто РД с одним элементом :
npz_rdd = sc.binaryFiles("gs://path/to/directory/containing/files/arr1.npz")
Затем каждая запись представляет собой пару <filename>,<str of bytes>
. В Dataproc sc.binaryFiles
будет автоматически работать напрямую с путями GCS, в отличие от np.load
, для которых требуются пути к локальной файловой системе.
Затем в коде рабочего, вам просто нужно использовать StringIO
использовать эти строки байтов в качестве файлового объекта вы положили в np.load
:
from StringIO import StringIO
# For example, to create an RDD of the 'arr_0' element of each of the picked objects:
npz_rdd.map(lambda l: numpy.load(StringIO(l[1]))['arr_0'])
Во время разработки, если вы действительно хотите, чтобы просто читать файлы в основной драйвер, вы всегда можете свернуть свой RDD с помощью collect()
, чтобы получить его локально:
npz_rdd = sc.binaryFiles("gs://path/to/directory/containing/files/arr1.npz")
local_bytes = npz_rdd.collect()[0][1]
local_np_obj = np.load(StringIO(local_bytes))
- 1. Чтение входных данных из GCS
- 2. Чтение массива из массива
- 3. Bash: Чтение из массива
- 4. Чтение реж из массива
- 5. Чтение данных из массива
- 6. Чтение из группы массива
- 7. Чтение массива из файла
- 8. Чтение данных из массива
- 9. Чтение из массива в C#
- 10. Чтение массива из файла
- 11. Swift - чтение из массива
- 12. Чтение из массива PHP
- 13. Чтение массива из расширения PHP (простое чтение)
- 14. Чтение массива массива из файла C++
- 15. Xcode: Чтение массива из dataFile
- 16. Чтение двухмерного массива из файла
- 17. Чтение данных из массива json
- 18. Чтение массива из .txt данных
- 19. Чтение массива char из stdin
- 20. Чтение бит из массива char
- 21. Чтение массива из txt-файла?
- 22. Чтение массива из пользовательских полей
- 23. Чтение массива строки из искры
- 24. Чтение размера массива из файла
- 25. Чтение строки из массива указателей
- 26. Чтение массива из файла. (Java)
- 27. Чтение данных из массива JSon
- 28. C++ Чтение из массива строк
- 29. Извлечь искру из банки Nexus
- 30. Пользовательский поиск (GCS) Google Custom Search (GCS)