1

我目前正在使用 python3 访问 HBase。我正在做的方式是使用 py4j 调用我正在编写的访问 HBase 的 JAVA API。

我有一个与创建带有限定符和值的 Put 对象有关的问题。

我想将字典传递给需要哈希图的 JAVA 类。是否可以通过py4j。

我不想为每个列限定符迭代地调用 Put。我想将 dict 传递给 py4j,它应该在 JAVA 端作为 HashMap 接收。

您能否请一些提示/指示如何做到这一点...

4

1 回答 1

2

有两种方法可以做你想做的事:

  1. 您可以创建一个 java.util.HashMap() 并将其用作python 端的字典。如果你通过字典很多,这很好,但你不经常在 python 端修改它。如果在 java 端修改了字典并且您想在 python 端查看修改,这也很好。
  2. Py4J 可以在调用 Java 方法时自动将 python dict 转换为 HashMap 。请注意,字典将被复制,并且在 Java 端执行的任何更改都不会反映在 Python 端。

我相信最简单的解决方案是#1:

>>> m = gateway.jvm.java.util.HashMap()
>>> m["a"] = 0
>>> m.put("b",1)
>>> m
{u'a': 0, u'b': 1}
>>> u"b" in m
True
>>> del(m["a"])
>>> m
{u'b': 1}
>>> m["c"] = 2 
于 2013-04-04T12:03:52.170 回答