我有一个由此python / spark函数创建的分隔字符串:
singleStringOfDelimitedNames= '|'.join([str(x.asDict().values()[0]) for x in
df3.collect()])
假设它说的是“Dan | Susie Ann | Bob”。
当我将此字符串传递到我创建的此Hive UDF中时,
df2 = sqlContext.sql("""SELECT field1, field2
FROM
refinedTable
WHERE
createdHiveUDF({0}, {1}, cast(field1 as string), cast(field2 as string))
""".format(percentage, singleStringOfDelimitedNames))
我收到不匹配的 token 异常(26!= 301)。您在功能说明中的“Susie”附近输入了不匹配的“安”。
令我困惑的是,当我对如下所示的“Dan | Susie Ann | Bob”进行硬编码时,一切都按预期工作。
df2 = sqlContext.sql("""SELECT field1, field2
FROM
refinedTable
WHERE
createdHiveUDF({0}, 'Dan|Susie Ann|Bob', cast(field1 as string), cast(field2 as string))
""".format(percentage))
我假设我不是正确地使用了.format,或者我必须找到一个不同的python / spark函数来从名称列中创建单个定界字符串。如果有人可以帮助我理解此不匹配的 token 异常,以及为什么上面的硬编码可以避免此问题,我将不胜感激。
最佳答案
您不是缺少单引号吗?
df2 = sqlContext.sql("""SELECT field1, field2
FROM
refinedTable
WHERE
createdHiveUDF({0}, '{1}', cast(field1 as string), cast(field2 as string))
""".format(percentage, singleStringOfDelimitedNames))
关于python - token 异常配置单元查询不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45760880/