小编Dan*_*man的帖子

使用Hiveserver2 Thrift Java客户端时请求挂起

这是这个问题的后续问题,我在哪里询问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)

java hadoop hive thrift hortonworks-data-platform

9
推荐指数
1
解决办法
1万
查看次数

如何向resx文件添加元数据

我想在解决方案中将所有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注释也发生了同样的事情.这种行为更容易理解,但并没有给我们留下很多好的选择.

以下是我所知道的可能的解决方案:

  1. 要求没有人可以使用托管资源编辑器.如果它只是我,这可能没问题,但我不能要求整个团队.托管资源编辑器是一个非常有用的工具.
  2. 要求每个人在使用托管资源编辑器后手动修复元数据.这太容易出错并且很麻烦.
  3. 向Visual Studio团队提交问题.我们将这样做,但我们在等待时需要一个解决方案,并且无法保证将会出现修复.
  4. Fork托管资源编辑器,使其表现我们想要的方式.我无法找到源,这可能有许可问题.我们对维护叉子也不感兴趣.
  5. 编写自己的托管资源编辑器版本.这就像上面的选项一样,但对于我们的用例来说,工作量要多于它的价值.
  6. 只需将元数据存储在data标记中即可.这是一个明显的黑客攻击.

看起来这里的失败不是resx文件本身,而是使用围绕resx文件的Visual Studio工具.但是,我们不会很快离开Visual Studio.我有什么解决方案吗?

c# resources resx internationalization visual-studio

5
推荐指数
1
解决办法
812
查看次数