Как исправить ошибку «ImportError: Нет имени модуля apache» в Jython и HBase - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь запустить следующий код 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

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 21 декабря 2018

Кажется, библиотека отсутствует в пути к классам.По умолчанию jython.jar включает в себя только наборы Python по умолчанию, присутствующие в каталоге lib.Любой сторонний модуль должен быть добавлен в classpath.

Вам необходимо добавить ссылку на hbase jar в библиотечные модули следующим образом:

jython -Dpython.path=/<location of jar>/hbase.jar test1.py

Другой вариант:

java -cp /<location of jar>/hbase.jar;jython.jar org.python.util.jython test1.py

Jython Classpath должен включать HBASE classpath для включения всех зависимостей.

Для получения более подробной информации, пожалуйста, обращайтесь: https://hbase.apache.org/book.html#jython

...