Apache SPARK с SQLContext:: IndexError

Я пытаюсь выполнить базовый пример, представленный в сегменте Вывод схемы с использованием отражения документации Apache SPARK.

Я делаю это на виртуальной машине Cloudera Quickstart (CDH5).

Пример, который я пытаюсь выполнить, выглядит следующим образом::

# sc is an existing SparkContext.
from pyspark.sql import SQLContext, Row
sqlContext = SQLContext(sc)

# Load a text file and convert each line to a Row.
lines = sc.textFile("/user/cloudera/analytics/book6_sample.csv")
parts = lines.map(lambda l: l.split(","))
people = parts.map(lambda p: Row(name=p[0], age=int(p[1])))

# Infer the schema, and register the DataFrame as a table.
schemaPeople = sqlContext.createDataFrame(people)
schemaPeople.registerTempTable("people")

# SQL can be run over DataFrames that have been registered as a table.
teenagers = sqlContext.sql("SELECT name FROM people WHERE age >= 13 AND age <= 19")

# The results of SQL queries are RDDs and support all the normal RDD operations.
teenNames = teenagers.map(lambda p: "Name: " + p.name)
for teenName in teenNames.collect():
  print(teenName)

Я запустил код точно так, как показано выше, но всегда получаю сообщение об ошибке «IndexError: list index out of range», когда я выполняю последнюю команду (цикл for).

Входной файл book6_sample доступен по адресу book6_sample.csv.

Я запустил код точно так, как показано выше, но всегда получаю ошибку «IndexError: индекс списка вне диапазона», когда я выполняю последнюю команду (цикл for).

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

Заранее спасибо.

С уважением, Шри


person Sri    schedule 28.06.2016    source источник


Ответы (1)


В конце вашего файла есть одна пустая строка, которая вызывает эту ошибку. Откройте файл в текстовом редакторе и удалите эту строку, надеюсь, она сработает.

person Sachin Janani    schedule 28.06.2016
comment
Привет, Сачин! Это сработало после внесения предложенных изменений. Спасибо. - person Sri; 28.06.2016