#json #apache-spark #pyspark #azure-synapse
#json #apache-искра #пыспарк #лазурный-синапс
Вопрос:
Я получаю исключение TaskCanceledException, и я не знаю, что еще я могу сделать, чтобы устранить его. Все, что я делаю, это беру список путей и пытаюсь запустить.read.format(‘json’).load(путь) и перенести их все в фрейм данных. Первоначально я использовал пути с подстановочными знаками, но с тех пор переместил его в список в цикле for, чтобы посмотреть, смогу ли я передать ошибку.
Это схема моих файлов json, все они одинаковые (они от Microsoft, поэтому они не меняются, API версионный):
root |-- tables: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- columns: array (nullable = true) | | | |-- element: struct (containsNull = true) | | | | |-- name: string (nullable = true) | | | | |-- type: string (nullable = true) | | |-- name: string (nullable = true) | | |-- rows: array (nullable = true) | | | |-- element: array (containsNull = true) | | | | |-- element: string (containsNull = true)
Там нет никакой информации об ошибке, только то, что задача была отменена. Я беру список, который выглядит так:
['abfss://lt;filesystemnamegt;@lt;accountnamegt;.dfs.core.windows.net/path/to/files/file.json', 'abfss://lt;filesystemnamegt;@lt;accountnamegt;.dfs.core.windows.net/path/to/files/file.json', 'abfss://lt;filesystemnamegt;@lt;accountnamegt;.dfs.core.windows.net/path/to/files/file.json']
И передать его в функцию, подобную этой:
combined_df = original_schema_df for file_in_path in path_list: new_df = spark.read.format('json') .load(file_in_path) combined_df = combined_df.unionAll(new_df) display(combined_df.limit(10)) combined_df.printSchema()
Я также пробовал (это в иерархическом пространстве имен с годом=, месяцем=, днем=, ниже просто упрощение)
spark.read.format('json').load('abfss://lt;filesystemnamegt;@lt;accountnamegt;.dfs.core.windows.net/path/to/files/*.json')
И оба они, как только пройдет 2 минуты, выдадут ошибку с общим исключением ошибки TaskCanceledException.
Когда я захожу в журналы монитора azure spark, я ничего не получаю с ошибкой. Когда я вхожу в историю искры, там ничего нет.
Я в растерянности. Может ли выполнение azure spark занять не более 2 минут из-за некоторого таймаута внешнего озера данных? У меня есть все возможные сетевые настройки, настроенные на время более 120 секунд:
spark.rpc.message.maxsize 512 spark.rpc.lookupTimeout 100000 spark.scheduler.excludeOnFailure.unschedulableTaskSetTimeout 10000 spark.network.timeout 200000 spark.executor.heartbeatInterval 50000
Комментарии:
1. Можете ли вы убедиться, что все загружаемые вами Json являются действительными json