2017-03-28 3 views
1

spark를 사용하여 하이브 테이블을 쿼리하고 있습니다.python 또는 pyspark의 조건문

frame = sqlContext.sql("select max(id) from testing.test123") 

frame1=frame.map(lambda row: [str(c) for c in row]).collect() 

lastval =''.join(frame1[0][0]) 

나는

지금이 lastval 내가 lastval 내가 없음을 얻고 정수 경우
abc = sqlcontext.sql("select * from testing.abc123 where id > {}". format(lastval)) 

아래처럼 다른 테이블을 조회 할 사용하여 기대하는 것입니다 이는 lastval 무엇입니까 오류. 하지만 lastval이 None이면 스크립트가 실패로 처리됩니다. 왜냐하면 lastval은 정수 여야하기 때문입니다. 내가 belwo 같은 시도하지만 lastval 할 때 여전히 '없음'

if lastval is 'None': 
lastval = 0 
+2

. 기회는, 당신은 파이썬 값'None'과 비교하기를 원합니다. 'lastval이 None :'이거나 빈 문자열'' ''을 실제로 테스트 할 수 있습니다. –

+0

@JennerFelton : 저는 그가 실제로 "None"이라는 문자열을 가지고 있다고 생각합니다. 그러나 오류는 밀접하게 관련되어 있습니다 : 그는 대신'lastval == 'None''을 확인해야합니다. – Dair

+0

@Dair 라이브러리를 사용하지는 않지만 '그렇지 않다면 lastval :'이 더 Pythonic이 될까요? 편집 : Misread. 정말로 "없음"을 반환하겠습니까? – roganjosh

답변

1

당신은 is를 사용하지 말아야을 표시하지 않는 lastval

0로 lastvalue가 없음 다음 가지고 있지 않은 경우

어떻게 지정합니까 문자열을 비교할 때.

if lastval == 'None': 
    lastval = 0 

또는 아마도 당신은 어떤 경우에 검사 할, lastval = '' 것을 말하고있다 : 대신 당신은 ==를 사용해야합니다 당신은 문자열 "없음"에 대해 비교하는

if not lastval: 
    lastval = 0