我的主要要求是使用HBase中的数据进行报告。 BIRT是我的报告工具。 Phoenix是一个JDBC客户端,允许使用SQL查询查询HBase数据。现在,有没有办法让我使用BIRT从HBase通过凤凰报告?任何指针都非常感激。
修改 感谢Simulant的回复。这就是我的尝试。
创建了一个Java类文件,通过Phoenix从我的HBASE集群访问数据。链接中提到的示例:http://www.javaworld.com/article/3030214/big-data/open-source-java-projects-apache-phoenix.html。
我没有在Console中显示获取的数据,而是创建了一个方法myPhoenixDatabase(),它将数据转换为JSON String和 回报。
在BIRT报告中,我使用了脚本化数据源。在数据集的脚本中,我导入了包含(1)和(2)中提到的类的包,解析了从myPhoenixDatabase()返回的JSON数组并映射 它们到我的数据集字段。
BIRT数据集脚本:
打开方法
importPackage(Packages.com.geekcap.javaworld.phoenixexample);
pe = new Packages.com.geekcap.javaworld.phoenixexample.PhoenixExample();
var jsontext = pe.myPhoenixDatabase();
myJSONObject = eval ("(" + jsontext + ")");
len = myJSONObject.length;
count=0;
获取方法
if(count < len)
{
var EmpID = myJSONObject[count].EMPID;
var Name = myJSONObject[count].NAME;
var Designation = myJSONObject[count].DESIGNATION;
row["EmpID"] = EmpID;
row["Name"]= Name;
row["Designation"]= Designation;
count++;
return true;
}
return false;
的问题:
仅在打开ECLIPSE后第一次执行时才能正常工作。在后续运行中,函数的返回值为NULL并抛出错误:&#34; TypeError:无法读取属性&#34; length&#34;来自null&#34;。
一个奇怪的解决方法修复了这个问题,两次调用该函数,一次来自Open方法的数据集脚本,第二次来自Afteropen方法,解决了这个问题。
但我仍然无法从Tomcat服务器获取报告。
我上传了班级,Maven POM和报告文件。很抱歉有很长的描述。任何帮助将非常感激。 https://drive.google.com/folderview?id=0B5pKuCLloQdHM09HN1E4MndQQ1k&usp=sharing