这是这个问题的后续问题,我在哪里询问Hiveserver 2 thrift java客户端API是什么.如果您不需要更多上下文,这个问题应该能够在没有该背景的情况下保持不变.
无法找到有关如何使用hiverserver2 thrift api的任何文档,我把它放在一起.我能找到的最佳参考是Apache JDBC实现.
TSocket transport = new TSocket("hive.example.com", 10002);
transport.setTimeout(999999999);
TBinaryProtocol protocol = new TBinaryProtocol(transport);
TCLIService.Client client = new TCLIService.Client(protocol);
transport.open();
TOpenSessionReq openReq = new TOpenSessionReq();
TOpenSessionResp openResp = client.OpenSession(openReq);
TSessionHandle sessHandle = openResp.getSessionHandle();
TExecuteStatementReq execReq = new TExecuteStatementReq(sessHandle, "SHOW TABLES");
TExecuteStatementResp execResp = client.ExecuteStatement(execReq);
TOperationHandle stmtHandle = execResp.getOperationHandle();
TFetchResultsReq fetchReq = new TFetchResultsReq(stmtHandle, TFetchOrientation.FETCH_FIRST, 1);
TFetchResultsResp resultsResp = client.FetchResults(fetchReq);
TRowSet resultsSet = resultsResp.getResults();
List<TRow> resultRows = resultsSet.getRows();
for(TRow …Run Code Online (Sandbox Code Playgroud) 我想在解决方案中将所有resx文件中的一些元数据放入.似乎可以使用metadata嵌入式XSD中包含的resx文件元素来完成:
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)
我不是100%确定该metadata元素应该用于存储任意元数据,因为我无法找到有关其预期目的的任何文档.但是只要使用文本编辑器编辑resx文件就可以正常工作.
在Visual Studio 2013中编辑resx文件时出现问题.打开资源的默认方式是"托管资源编辑器".遗憾的是,托管资源编辑器不区分数据和元数据.这会导致元数据在保存时以静默方式更改为数据.这个错误(或者可能是有意的设计)至少从2010年开始存在.
我们还尝试添加Managed Resources Editor无法识别的元素,但这些元素在保存时被删除.XML注释也发生了同样的事情.这种行为更容易理解,但并没有给我们留下很多好的选择.
以下是我所知道的可能的解决方案:
data标记中即可.这是一个明显的黑客攻击.看起来这里的失败不是resx文件本身,而是使用围绕resx文件的Visual Studio工具.但是,我们不会很快离开Visual Studio.我有什么解决方案吗?