PySpark3 - чтение файлов XML - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь прочитать файл XML в своей записной книжке PySpark3 Jyupter (работает в Azure).

У меня есть этот код:

df = spark.read.load("wasb:///data/test/Sample Data.xml")

ОднакоЯ все время получаю сообщение об ошибке java.io.IOException: Could not read footer for file:

An error occurred while calling o616.load.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 10.0 failed 4 times, most recent failure: Lost task 0.3 in stage 10.0 (TID 43, wn2-xxxx.cloudapp.net, executor 2): java.io.IOException: Could not read footer for file: FileStatus{path=wasb://xxxx.blob.core.windows.net/data/test/Sample Data.xml; isDirectory=false; length=6947; replication=0; blocksize=0; modification_time=0; access_time=0; owner=; group=; permission=rw-rw-rw-; isSymlink=false}

Я знаю, что оно достигает файла - от просмотра длины - соответствует размеру файла XML - но застряло после этого?

Есть идеи??

Спасибо.

1 Ответ

1 голос
/ 12 июля 2019

Пожалуйста, обратитесь к двум блогам ниже, я думаю, что они могут полностью ответить на ваш вопрос.

  1. хранилище BLOB-объектов Azure с Pyspark
  2. Эффективное чтение файлов JSON, CSV и XML в Apache Spark

Код похож на приведенный ниже.

session = SparkSession.builder.getOrCreate()

session.conf.set(
    "fs.azure.account.key.<storage-account-name>.blob.core.windows.net",
    "<your-storage-account-access-key>"
)
# OR SAS token for a container:
# session.conf.set(
#    "fs.azure.sas.<container-name>.blob.core.windows.net",
#    "<sas-token>"
# )

# your Sample Data.xml file in the virtual directory `data/test`
df = session.read.format("com.databricks.spark.xml") \
    .options(rowTag="book").load("wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/data/test/") 

Если вы использовали блоки данных Azure, я думаю, что код будет работать так, как ожидалось. в противном случае может потребоваться установить библиотеку com.databricks.spark.xml в кластере Apache Spark.

Надеюсь, это поможет.

...