我有一个pandas数据框oParameterData
,我使用hiveodbc连接在Hadoop上构建查询。我用它来填充一个名为oParameter
的Python字典
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']
当我打印整本词典时,我有以下内容:
^{pr2}$但当我逐个打印键和值时,它们会正确显示:
>>> print(oParameter['pTableName'])
>>> 'hero_game_context_gamemode'
>>> print(oParameter['pDataPartition'])
>>> 'dt'
请解释一下为什么要对字典进行正确的编码? 我在下面描述的后续查询中使用这些参数:Hive ParseException in Drop Table Statement 我猜查询会因为这个编码问题而失败。在
在进一步调查之后,我发现在使用pyodbc连接到Hadoop时,编码设置不正确。在
我是这样联系的:
我改成这样联系:
^{pr2}$现在,当我从数据帧构建字典时,它会正确显示。在
相关问题 更多 >
编程相关推荐