Я пытаюсь запустить следующий код Jython для сканирования таблицы hbase:
import java.lang
from org.apache.hadoop.hbase import TableName, HBaseConfiguration
from org.apache.hadoop.hbase.client import Connection, ConnectionFactory,
Result, ResultScanner, Table, Admin
from org.apache.hadoop.conf import Configuration
conf = HBaseConfiguration.create()
connection = ConnectionFactory.createConnection(conf)
admin = connection.getAdmin()
tableName = TableName.valueOf('station')
table = connection.getTable(tableName)
cf = "stn"
attr = "name"
scanner = table.getScanner(cf)
while 1:
result = scanner.next()
if not result:
break
print java.lang.String(result.row),
java.lang.String(result.getValue(cf, attr))
Я использую следующую команду для его запуска:
jython test1.py
Но яполучить следующую ошибку:
Traceback (most recent call last):
File "test1.py", line 2, in <module>
from org.apache.hadoop.hbase import TableName, HBaseConfiguration
ImportError: No module named apache
Как мне решить эту проблему?Я установил hbase в автономном режиме, и он работает нормально (создал несколько примеров таблиц с использованием оболочки hbase).
ОБНОВЛЕНИЕ: Как указано в комментариях, я попытался выполнить следующую команду для запускаэто:
jython -Dpython.path =. / hbase-1.4.8 / lib / hbase-common-1.4.8.jar test1.py
ЯТеперь появляется следующее сообщение об ошибке:
Трассировка (последний вызов был последним): файл "test1.py", строка 2, из org.apache.hadoop.hbase import TableName, HBaseConfiguration java.lang.NoClassDefFoundError: org / apache / hadoop / io / RawComparator в org.apache.hadoop.hbase.NamespaceDescriptor. (NamespaceDescriptor.java:45) в org.apache.hadoop.hbase.TableName. (TableName.java:82).lang.Class.forName0 (собственный метод) в java.lang.Class.forName (Class.java:348) в org.python.core.Py.loadAndInitClass (Py.java:991) в org.python.core.Py.findClassInternal (Py.java:926) в org.python.core.Py.findClassEx (Py.java:977) в org.python.core.packagecache.SysPackageManager.findClass (SysPackageManager.java:133) по адресу org.python.core.packagecache.PackageManager.findClass (PackageManager.java:33) по адресу org.python.core.packagecache.SysPackageManager.findClass (SysPackageManager):.python.core.PyJavaPackage. findattr_ex (PyJavaPackage.java:134) в org.python.core.PyObject. findattr (PyObject.java:946) в org.python.core.imp.importFromAs (imp.java:1160) в org.python.core.imp.importFrom (imp.java:1132) в org.python.pycode._pyx0.f $ 0 (test1.py:13) в org.python.pycode._pyx0.call_function (test1.py) в org.python.core.PyTableCode.call (PyTableCode.java:167) в org.python.core.PyCode.call (PyCode.java:18) в org.python.core.Py.runCode (Py.java:1386) в org.python.util.PythonInterpreter.execfile (PythonInterpreter.java:296) в org.python.util.jython.run (jython.java:362) в org.python.util.jython.main (jython.java:142) Причина: java.lang.ClassNotFoundException: org.apache.hadoop.io.RawComparator в org.python.core.SyspathJavaLoader.findClзадница (SyspathJavaLoader.java:131) в java.lang.ClassLoader.loadClass (ClassLoader.java:424) в java.lang.ClassLoader.loadClass (ClassLoader.java:357) ... еще 22 * 1027 *
java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org / apache / hadoop / io / RawComparator
Как мне решить эту проблему?