我正在 PySpark(Apache Spark Python API)中使用 JayDeBeAPI,这是我的代码开头(注意,实际上我是通过 PySpark 的交互式 shell 运行所有代码的)。
import jaydebeapi
import jpype
conn = jaydebeapi.connect('org.apache.phoenix.jdbc.PhoenixDriver',
['jdbc:phoenix:hostname', '', ''])
我正在查询 Apache Phoenix,它是 Apache HBase 的 SQL "前端"。
以下是我用于 SQL 查询的 Python 代码:
curs = conn.cursor()
curs.execute('select "username",count("username") from "random_data" GROUP BY "username"')
curs.fetchall()
我得到的输出对于所有行都是这样的:
(u'Username', <jpype._jclass.java.lang.Long object at 0x25d1e10>)
如何修复代码以显示返回列(count
列)的值?
根据Apache Phoenix数据类型页面,count
列的数据类型为BIGINT,映射到java.lang.Long
,但由于某种原因jpype
未显示结果。
我通过python setup.py install
下载了JayDeBeAPI 0.1.4和JPype 0.5.4.2。
BIGINT
添加到字典中了。有没有办法在不解析的情况下去掉尾随的 L? - Alaa Alin.value
是一个值为44的Python“long”,而不是字符串“'44L'”。 - Luke Woodwardfrom jaydebeapi import _DEFAULT_CONVERTERS, _java_to_py _DEFAULT_CONVERTERS.update({'BIT':_java_to_py('booleanValue')})
- Ouyang Ze