python - 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
解决方案
这是范围问题 - 您应该学习有关代码开发的最佳实践或请某人帮助您构建代码。
快速而肮脏的解决方案(如果这是一个一次性脚本)是放在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()
推荐阅读
- python - Why can't Selenium find this class on Wikipedia?
- android - What is Support 64-bit architectures
- postgresql - PostgreSQL json对象(PGobject)到logstash的问题 - 类型转换问题
- angular - 使用指令格式化日期和更新输入,但验证器不喜欢它
- javascript - FileReader::readAsArrayBuffer,如何获取长度?
- python - 如何验证以 2 个数字开头的用户输入?
- python - 为什么每当我使用函数时,我总是在 atom 中得到一个空白结果?
- jquery - 如何遍历每个项目并为每个实例返回相应的值(jquery和scrollmagic)
- javafx - 如何检测舞台外拖板的元素?
- sqlite - Pycharm Database for SQlite 将日期和日期时间列转换为长整数