python - token 异常配置单元查询不匹配

标签 python hadoop hive pyspark hiveql

我有一个由此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/

相关文章:

hadoop - 如何删除配置单元表中重复次数少于20的列

hadoop - hive 中的增量方法

python - 如何将一列从另一个数据帧连接到特定列?

hadoop - 使用正则表达式的配置单元查询

python - 为什么在将 Python 中的生成器传递给函数时可以省略周围的括号?

hadoop - PIG中的输出格式有问题

hadoop - pig 窝为每一个澄清

hive - 在hive中创建日期表

python - 使用 python 从基于 DataFrame 的 2 个向量的函数创建一个新字段

Python 创建 cookie,然后使用 cookie 加载页面