首页 > 解决方案 > PySpark 中的数据框未显示

问题描述

我正在尝试显示一个数据框,但不知何故它一直告诉我没有定义 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

标签: pythonpysparkdatabricks

解决方案


这是范围问题 - 您应该学习有关代码开发的最佳实践或请某人帮助您构建代码。

快速而肮脏的解决方案(如果这是一个一次性脚本)是放在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()

推荐阅读