Query hive data

背景

有Hue可以用来查询hive和impala的数据,但是使用起来不是特别方便,尤其想要同时把数据导出来的时候。

原来想尝试用java的方式,也向同事要了demo,但是需要keytab,而且还是倾向于用python。

最后尝试了一些python库失败(主要是这些module依赖的东西比较多,需要很多环境的配置,但是都没有权限,比较麻烦),从同事那得知他们的Tableau本地用的是odbc的连接方式。

之前试过用pyodbc去连接sql server数据库,而且理论上使用odbc,只要数据源配置好就可以了,api的使用是共通的,不管什么语言都可以用odbc的方式去访问。

Read more

pyodbc unicode issue

这两天SRD这边有文件中存在乱码,导致那一行数据插入失败。

下面是我晚上在家里电脑重现的时候信息,所以是中文的:

1
pyodbc.Error: ('HY090', '[HY090] [Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度 (0) (SQLBindParameter)')

我一开始以为是这列数据的字符串长度过长,有1万多个字符,但是我用别的值试了一下,是没有问题的。

然后我尝试着使用print输出来看一下,竟然直接error了。
下面是例子:

1
2
3
text = "you are right \udef6 thanks"
print(text)
# UnicodeEncodeError: 'utf-8' codec can't encode character '\udef6' in position 14: surrogates not allowed
Read more