From: Liam S. <lsl...@gm...> - 2014-04-25 09:11:33
|
Just want to add, Java \\x00 should be \x00 in jython/python. So the string of "?BC??FG" in java Bytes.toBytes("\\x00BC\\x00\\x00FG") should be Bytes.toBytes("\x00BC\x00\x00FG") or array('b',"\x00BC\x00\x00FG") in jython/python. >>> len("?BC??FG") 7 >>> len(array('b',"\x00BC\x00\x00FG")) 7 >>> len(Bytes.toBytes("\x00BC\x00\x00FG") ) 7 >>> len(array('b','\\x00BC\\x00\\x00FG')) 16 thanks, liam On Thu, Apr 24, 2014 at 5:59 PM, Liam Slusser <lsl...@gm...> wrote: > Thank you, Jim, that worked. > > -liam > > > On Thu, Apr 24, 2014 at 2:57 PM, Jim Baker <jb...@zy...> wrote: > >> You will want to construct this Pair directly. The signature of the >> constructor is >> >> FuzzyRowFilter(List<Pair<byte[],byte[]>> fuzzyKeysData) >> >> As you saw, Jython doesn't know how to directly convert a Python tuple to >> an org.apache.hadoop.hbase.util.Pair, although it can convert a Python list >> to a Java List. But you can readily construct this Pair with one extra >> step. Also I prefer using the standard Python array module instead of the >> Jython specific jarray, unless you need jarray.zeros; both actually >> construct standard Java arrays. With that in mind, something like the >> following should work: >> >> from array import array >> from org.apache.hadoop.hbase.filter import FuzzyRowFilter >> from org.apache.hadoop.hbase.util import Pair >> >> filter = FuzzyRowFilter([ >> Pair(array('b', "\\x00BC\\x00\\x00FG"), >> array('b', [1, 0, 0, 1, 1, 0, 0]))]) >> >> Note this also means you don't have to use Bytes.toBytes - you're just >> using standard portable Python up to the point of constructing the specific >> HBase object. >> >> - Jim >> >> >> On Thu, Apr 24, 2014 at 2:49 PM, Liam Slusser <lsl...@gm...> wrote: >> >>> Alan - >>> >>> Thank you! That got me closer. I believe a lot of that code I can skip >>> since Here is what I have so far... >>> >>> >>> fuzzyKeysData = ArrayList() >>> >>> scan = Scan() >>> >>> fuzzyKeysData.add((Bytes.toBytes("\\x00BC\\x00\\x00FG"), array([1, >>> 0, 0, 1, 1, 0, 0],'b') )) >>> True >>> >>> fuzzyKeysData >>> [(array('b', [92, 120, 48, 48, 66, 67, 92, 120, 48, 48, 92, 120, 48, 48, >>> 70, 71]), array('b', [1, 0, 0, 1, 1, 0, 0]))] >>> >>> filter = FuzzyRowFilter(fuzzyKeysData) >>> >>> scan.setFilter(filter) >>> Traceback (most recent call last): >>> File "<stdin>", line 1, in <module> >>> java.lang.ClassCastException: org.python.core.PyTuple cannot be cast to >>> org.apache.hadoop.hbase.util.Pair >>> at >>> org.apache.hadoop.hbase.filter.FuzzyRowFilter.toString(FuzzyRowFilter.java:158) >>> at org.apache.hadoop.hbase.client.Scan.toMap(Scan.java:600) >>> at org.apache.hadoop.hbase.client.Operation.toJSON(Operation.java:67) >>> at org.apache.hadoop.hbase.client.Operation.toString(Operation.java:93) >>> at >>> org.apache.hadoop.hbase.client.Operation.toString(Operation.java:107) >>> at org.python.core.PyJavaType$7.__call__(PyJavaType.java:596) >>> at org.python.core.PyObjectDerived.__repr__(PyObjectDerived.java:63) >>> at org.python.core.PySystemState.displayhook(PySystemState.java:1284) >>> at >>> org.python.core.PySystemStateFunctions.__call__(PySystemState.java:1478) >>> at org.python.core.PyObject.invoke(PyObject.java:3638) >>> at org.python.core.Py.printResult(Py.java:1841) >>> at org.python.pycode._pyx189.f$0(<stdin>:1) >>> at org.python.pycode._pyx189.call_function(<stdin>) >>> at org.python.core.PyTableCode.call(PyTableCode.java:165) >>> at org.python.core.PyCode.call(PyCode.java:18) >>> at org.python.core.Py.runCode(Py.java:1302) >>> at org.python.core.Py.exec(Py.java:1346) >>> at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:215) >>> at >>> org.python.util.InteractiveInterpreter.runcode(InteractiveInterpreter.java:89) >>> at >>> org.python.util.InteractiveInterpreter.runsource(InteractiveInterpreter.java:70) >>> at >>> org.python.util.InteractiveInterpreter.runsource(InteractiveInterpreter.java:46) >>> at org.python.util.InteractiveConsole.push(InteractiveConsole.java:110) >>> at >>> org.python.util.InteractiveConsole.interact(InteractiveConsole.java:90) >>> at org.python.util.jython.run(jython.java:378) >>> at org.python.util.jython.main(jython.java:137) >>> >>> java.lang.ClassCastException: java.lang.ClassCastException: >>> org.python.core.PyTuple cannot be cast to org.apache.hadoop.hbase.util.Pair >>> >>> >>> I think I can ignore the List<Pair<byte[], byte[]>> part as jython does >>> it automatically for me (right?). Thoughts? >>> >>> thanks! >>> liam >>> >>> >>> >>> >>> On Thu, Apr 24, 2014 at 12:39 PM, Alan Kennedy <jyt...@xh...>wrote: >>> >>>> To create such a byte[] in jython, for passing to java, use the jarray >>>> module. >>>> >>>> >>>> http://www.jython.org/jythonbook/en/1.0/DataTypes.html#jython-specific-collections >>>> >>>> Alan. >>>> >>>> >>>> On Thu, Apr 24, 2014 at 8:32 PM, Liam Slusser <lsl...@gm...>wrote: >>>> >>>>> >>>>> Hey All - >>>>> >>>>> I've been working with jython and hbase for awhile but I'm having a >>>>> problem converting this function into jython. >>>>> >>>>> java example code: >>>>> >>>>> Scan scan = new Scan(); >>>>> List<Pair<byte[], byte[]>> fuzzyKeysData = new >>>>> ArrayList<Pair<byte[],byte[]>>(); >>>>> // search for "?BC??FG" >>>>> fuzzyKeysData.add(new Pair<byte[],byte[]>(Bytes.toBytes("\\x00BC\\x00\\x00FG"), >>>>> new byte[]{1, 0, 0, 1, 1, 0, 0})); >>>>> FuzzyRowFilter filter = new FuzzyRowFilter(fuzzyKeysData); >>>>> scan.setFilter(filter); >>>>> >>>>> I've figured out much of it, but i'm unable to get byte[] to work. >>>>> Reading the jython docs byte[] should be treated as a string but i'm not >>>>> exactly sure how to do that. >>>>> >>>>> Could anybody help me out? >>>>> >>>>> thanks! >>>>> liam >>>>> >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> Start Your Social Network Today - Download eXo Platform >>>>> Build your Enterprise Intranet with eXo Platform Software >>>>> Java Based Open Source Intranet - Social, Extensible, Cloud Ready >>>>> Get Started Now And Turn Your Intranet Into A Collaboration Platform >>>>> http://p.sf.net/sfu/ExoPlatform >>>>> _______________________________________________ >>>>> Jython-users mailing list >>>>> Jyt...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/jython-users >>>>> >>>>> >>>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Start Your Social Network Today - Download eXo Platform >>> Build your Enterprise Intranet with eXo Platform Software >>> Java Based Open Source Intranet - Social, Extensible, Cloud Ready >>> Get Started Now And Turn Your Intranet Into A Collaboration Platform >>> http://p.sf.net/sfu/ExoPlatform >>> _______________________________________________ >>> Jython-users mailing list >>> Jyt...@li... >>> https://lists.sourceforge.net/lists/listinfo/jython-users >>> >>> >> > |