Я написал парсер в Python, используя l xml .etree, и сейчас пытаюсь запустить указанный парсер в кластере Had oop. Когда я запускаю функцию локально, она работает как положено, но я получаю следующую ошибку, когда пытаюсь применить ее к файлу в кластере (я выполняю следующее в оболочке Pyspark, python3)
xml_pathname = "hdfs://file_path/date_directory/example_one.xml"
xml_tree = etree.parse(xml_pathname)
OSError: Error reading file '/file_path/date_directory/example_one.xml': failed to load external entity
"/file_path/date_directory/example_one.xml"
Я вижу файл, когда запускаю hdfs dfs -ls /file_path/date_directory/example_one.xml
в терминале.
Две области, в которых я буду признателен за помощь -
- Как загрузить файлы XML в метод l xml .etree.parse () из кластера, использующего Pyspark?
- Как мне лучше масштабировать его для эффективной работы в Spark? Я хотел бы проанализировать миллионы XML файлов в кластере, используя мой Python синтаксический анализатор - сработает ли приведенная ниже модификация, или есть лучший способ для парралелизации и запуска синтаксического анализатора в масштабе? Вообще, как мне настроить параметры в моей конфигурации искры для оптимальных результатов (большое количество исполнителей, более одного драйвера и т. Д. c.)?
#Same as above but with wildcards to parse millions of XML files
xml_pathname = "hdfs://file_path/*/*.xml"
xml_tree = etree.parse(xml_pathname)
Работали над этим на какое-то время и был бы очень благодарен за любую помощь. Ценю вас всех