我的pyspark脚本有以下代码。我试图生成一个查询,每次都用不同的值i
运行它。查询应该选择嵌套的JSON元素并计算大小(即出现的次数)。我计算它是为了帮助我对最终的表进行单元测试,我将使用“explode”功能单独创建这个表
for i in range(1,10) :
onerowDF = spark.sql("""SELECT items['responses'][i]['id'] as items_response_id, items['responses'][i]['name'] as responses_name FROM responses""")
onerowDf.select(size("items_response_id"), size("responses_name")).show()
运行此命令时出错:
AnalysisException: u"cannot resolve '`i`' given input columns: [hasMore, items, total]; line 1 pos 74;\n'Project [items#1.id AS items_id#149, items#1.responseTime AS items.responseTime#154, items#1.responses['i][id] AS items_response_id#150, items#1.responses['i][name] AS responses_name#151, items#1.responses['i][type] AS responses_type#152, items#1.responses['i][answers] AS responses_answers#153]\n+- SubqueryAlias responses\n +- Relation[hasMore#0,items#1,total#2L] json\n"
我故意从上面的代码中删除了一些元素以使其更简单,这就是为什么错误在这里列出的元素比我的代码多。你知道吗
那么,为什么我不能在每个查询中替换I的值,然后运行这两条语句并得到结果呢?你知道吗
Python如何知道字符串中的
i
引用的是变量而不是简单的字母?Python没有Bash那样复杂的插值规则。你知道吗你得说清楚。最简单的方法是使用f字符串。你知道吗
确保连接变量。不要包含在字符串中。不要使用
"...i..."
,而要确保使用"..."+i+"...."
。 如果你有另一个我你正在使用可能我错了。还要检查相关问题 更多 >
编程相关推荐