Одним из самых больших недостатков Spark является то, что операции ленивы, и даже если вызвать действие, Spark постарается выполнить как можно меньше работы.Например,
show
попытается оценить только 20 первых строк - если в конвейере нет широких преобразований, он не будет обрабатывать все данные.Вот почему show
может работать, в то время как saveAsTable
терпит неудачу.
Ваш код ошибки в лямбда-выражении:
File "<stdin>", line 1, in <lambda>
в результате:
IndexError: list index out of range
Это почти всегда ошибка пользователя в отсутствии обработки искаженных данных.Я подозреваю, что ваш код содержит что-то похожее на
(sc.textFile(...)
.map(lambda line: line.split(...)
.map(lambda xs: (xs[0], xs[1], xs[3])))
, и ваш код завершается ошибкой, когда строка не содержит ожидаемое количество аргументов.
В целом предпочитают стандартные функции, которые обрабатывают возможные исключения, или используют другие методы , чтобы избежать сбоев.
И если это просто анализ файла данных с разделителями (CSV, TSV), используйте Spark CSV reader .