2015-11-06 221 views
0

我有一个字符串变量dest,它保存了一定的值。我需要检查这个变量是否存在于已注册的临时表中。我使用下面的查询来找到它。如何将数据框与字符串变量进行比较

terminatecheck = sqlContext.sql(""" 
     SELECT 1 as op from known where node = """+dest +""" and 1=1 
    """) 

现在我需要将terminatecheck的值与“1”进行比较并终止循环。 我检查并发现terminatecheck是一个行对象。我究竟如何比较呢?

if terminatecheck.op =="1": 

不起作用

回答

0

调用sqlContext.sql("Select...")将返回dataframe这是懒惰的评估。您需要调用类似first,takecollect的操作来获取评估的表达式和返回的值。您可能需要致电first,它返回一行(类型为)。 takecollect返回一个数组(类型为Array[Row])。

terminatecheck = sqlContext 
    .sql("""SELECT 1 as op from known where node = """+dest +""" and 1=1""") 
    .first 
+0

我解决了它,通过检查.count()它也工作 – mhn

相关问题