iPython 노트에서 하이브를 쿼리하기 위해 pyhs2를 사용하고 있습니다. 나는 사용하고 싶다. Hive 쿼리의 WHERE 절에 있습니다. numpy 내의 체크 ndarray
오브젝트.아파치 하이브에서 numpy ndarray 객체를 사용하십시오 WHERE 조건
q = """
SELECT *
FROM luca.pmp_imps iq
WHERE GUIDBINTOSTR(iq.bidrequestpid) IN {interestingbids}
""".format(interestingbids = interesting_bids)
results = QueryDataFromHive(q)
지금, 무엇을 QueryDataFromHive()
단순히 수행하는 하이브에서 쿼리를 실행하고 팬더 DataFrame
객체의 결과를 가져올 수 있습니다 :
쿼리는이 같은 것입니다. 그보다 더 복잡한 것은 없습니다. GuidBinToStr
은 단순히 바이너리에서 변수를 문자열로 변환합니다.
하이브의 조회는 다음 될 것입니다 무언가 같이 : 물론
Pyhs2Exception Traceback (most recent call last)
<ipython-input-42-d535411ad0e2> in <module>()
9
10 # print(q)
---> 11 imps_raw = QueryDataFromHive(q)
12 imps_raw.columns = ['bidrequest', 'userpid', 'mediacost', 'date', 'market']
13 imps_raw.head()
<ipython-input-21-8db015266821> in QueryDataFromHive(query)
10 cur.execute("CREATE TEMPORARY FUNCTION guidBinToStr AS 'com.companyname.hive.udf.UDFBinaryToGUID'")
11 cur.execute("CREATE TEMPORARY FUNCTION guidStrToBin AS 'com.companyname.hive.udf.GenericUDFGUIDToBinary'")
---> 12 cur.execute(query)
13 df = pd.DataFrame()
14 for i in cur.fetch():
/usr/local/lib/python2.7/site-packages/pyhs2/cursor.pyc in execute(self, hql)
61 self.operationHandle = res.operationHandle
62 if res.status.errorCode is not None:
---> 63 raise Pyhs2Exception(res.status.errorCode, res.status.errorMessage)
64
65 def fetch(self):
Pyhs2Exception: "Error while processing statement: FAILED: ParseException line 4:44 cannot recognize input near 'IN' '[' ''00009eed-9756-437f-8e83-b0cbb3d375d2'' in expression specification\n"
하이브 제대로 읽지 않습니다 때문에이 작동하지 않습니다
SELECT *
FROM luca.pmp_imps iq
WHERE GUIDBINTOSTR(iq.bidrequestpid) IN ['00009eed-9756-437f-8e83-b0cbb3d375d2'
'000382d9-f1b2-4d12-b5b9-bb02d34bbb3c'
'000565a3-f563-40db-b5b5-fe599acfc5ac' ...,
'fff64455-3b1c-4ae2-bb9b-0f02c02aeccc'
'fff8f63e-a66c-44b7-b393-0283d969db72'
'ffffd616-370b-4ec5-8c4a-a9f8cdc53958']
나는 다음과 같은 오류 메시지를 받았습니다 오브젝트 파이썬이 발송 중입니다. 나는 누군가가 그런 문제를 겪어 보았는지 궁금해서 작업 해결책을 제시했다.