2017-08-18 16 views
0

私はこれのpython /スパーク機能によって作成された単一区切られた文字列があります: "。ダン|スージー・アン|ボブ不一致トークン例外ハイブクエリ

singleStringOfDelimitedNames= '|'.join([str(x.asDict().values()[0]) for x in 
df3.collect()]) 

のは、それが言うとしましょうを 私は、私が作成したこのハイブUDFにこの文字列を渡し、

df2 = sqlContext.sql("""SELECT field1, field2 
        FROM 
        refinedTable 
        WHERE 
        createdHiveUDF({0}, {1}, cast(field1 as string), cast(field2 as string)) 
        """.format(percentage, singleStringOfDelimitedNames)) 

私は(26!= 301)の不一致トークン例外を取得しています。 U「機能仕様の不一致入力 『アン』期待して)の近くに 『スージー』

何私を混乱することは、私はハードコードときである。 『ダン|スージー・アン|ボブは、』以下に示す、すべては私が意図したとおりに機能さ

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関数を見つけて、名前の列から区切られた単一の文字列を作成する必要があります。上記のハードコーディングがなぜこの問題を回避するのか、私は感謝します。

+0

私の側では何もテストしませんでしたが、それは私に多くの運を与えませんでした - 私は|それは私にただ一つの性格を与えました。 \\それをエスケープした後にのみ、私は必要なものを手に入れました。私はマニュアルを読むことが助けたかもしれないと思う:) – hummingBird

答えて

0

一重引用符がありませんか?

df2 = sqlContext.sql("""SELECT field1, field2 
        FROM 
        refinedTable 
        WHERE 
        createdHiveUDF({0}, '{1}', cast(field1 as string), cast(field2 as string)) 
        """.format(percentage, singleStringOfDelimitedNames)) 
+0

それは本当に単純なハァッでした。マリーありがとう! –

関連する問題