Датафрейм в PySpark не отображается - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь отобразить фрейм данных, но почему-то мне все время говорят, что не определен df!Как это может быть?Вот код:

for key, val in mapping_dict.items():
    target_table = key
    files, query, schema = val
    for file in files:
      try:
        df = sqlContext.read.format('csv').options(header='true', charset='UTF-16').schema(schema).load(file)
        #Convert column names to lowercases and replace spaces with underscores.
        df = df.toDF(*[(c.lower()).replace(' ','_') for c in df.columns])
        #Convert strings to date type.
        df = df.withColumn("date", to_date(df['date']))
        df.registerTempTable("dataTable")
        df = sqlContext.sql(query)
        )
      except Exception as e:
        print(e)
  return print("The loading is completed!")

df.head()

The error is NameError: name 'df' is not defined

1 Ответ

0 голосов
/ 19 апреля 2019

это проблема с ограничениями - вы должны изучить лучшие практики по разработке кода или попросить кого-нибудь помочь вам структурировать код.

Быстрое и грязное решение (в случае, если это одноразовый скрипт), это поставитьglobal df поверх вашей функции

def your_function(...):
    global df

    for key, val in mapping_dict.items():
        target_table = key
        files, query, schema = val
        for file in files:
    ...

df.head()
...