3
하이브 ODBC 연결을 사용하여 Hadoop에서 쿼리를 작성한 팬더 데이터 프레임 oParameterData
가 있습니다. 나는라는 파이썬 사전을 채우기 위해 그것을 사용하고 oParameter
파이썬 사전에 인코딩 된 값이 포함됨
import pyodbc
import pandas
oConnexionString = 'Driver={ClouderaHive};[...]'
oConnexion = pyodbc.connect(oConnexionString, autocommit=True)
oConnexion.setencoding(encoding='utf-8')
oQueryParameter = "select * from my_db.my_table;"
oParameterData = pandas.read_sql(oQueryParameter, oConnexion)
oCursor = oConnexion.cursor()
for oRow in oParameterData.index:
oParameter = {}
oParameter['pTableName'] = oParameterData.loc[oRow,'game']
oParameter['pDataPartition'] = oParameterData.loc[oRow,'partition']
oParameter['pDataLocation'] = oParameterData.loc[oRow,'data_path']
oParameter['pAvroSchemaURL'] = oParameterData.loc[oRow,'schema_path']
내가 다음이 전체 사전 인쇄 할 때 :
>>> print(oParameter)
>>> {'pDataLocation': '/\x00d\x00a\x00t\x00a\x00/\x00d\x00a\x00t\x00a\x00l\x00a\x00k\x00e\x00/\x00t\x00m\x00p\x00/\x00k\x00a\x00f\x00k\x00a\x00d\x00u\x00m\x00p\x00e\x00r\x00/\x00d\x00a\x00t\x00a\x00/\x00H\x00e\x00r\x00o\x00/\x00c\x00o\x00n\x00t\x00e\x00x\x00t\x00.\x00s\x00t\x00a\x00r\x00t\x00.\x00G\x00a\x00m\x00e\x00M\x00o\x00d\x00e\x00\x00/\x00v\x00=\x001\x00.\x00x\x00', 'pAvroSchemaURL': '/\x00d\x00a\x00t\x00a\x00/\x00d\x00a\x00t\x00a\x00l\x00a\x00k\x00e\x00/\x00t\x00m\x00p\x00/\x00k\x00a\x00f\x00k\x00a\x00d\x00u\x00m\x00p\x00e\x00r\x00/\x00d\x00a\x00t\x00a\x00/\x00H\x00e\x00r\x00o\x00/\x00c\x00o\x00n\x00t\x00e\x00x\x00t\x00.\x00s\x00t\x00a\x00r\x00t\x00.\x00G\x00a\x00m\x00e\x00M\x00o\x00d\x00e\x00\x00/\x00c\x00o\x00n\x00t\x00e\x00x\x00t\x00.\x00s\x00t\x00a\x00r\x00t\x00.\x00G\x00a\x00m\x00e\x00M\x00o\x00d\x00e\x00_\x001\x00.\x00x\x00.\x00a\x00v\x00s\x00c\x00', 'pTableName': 'h\x00e\x00r\x00o\x00_c\x00o\x00n\x00t\x00e\x00x\x00t\x00', 'pDataPartition': 'd\x00t\x00'}
을하지만 키 인쇄 및 값 때 하나 하나가 제대로 표시를 :
사전을 제대로 인코딩하는 이유와 방법을 설명해주십시오. 여기에 설명 된 후속 쿼리에서이 매개 변수를 사용하고 있습니다. Hive ParseException in Drop Table Statement 이 인코딩 문제로 인해 쿼리가 실패한 것 같습니다.
이것은 이상합니다. 모든 문자는'x00'으로 구분되어 인쇄 될 때'NUL'을 표시합니다. – JacobIRR
@StephenRauch 사전 전체를 인쇄 할 때 사전 값을 하나씩 인쇄 할 때와 같은 방식으로 읽을 수있는 것으로 기대합니다. –
@JacobIRR 네 그것은 참으로 이상합니다. 그러나 개별적으로 값을 출력 할 때 그들은 null이 아닌 것을 볼 수 있습니다. –