【发布时间】:2018-12-21 06:04:14
【问题描述】:
我正在尝试运行以下 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 shell 创建了一些示例表)。
更新: 按照 cmets 中的建议,我尝试了以下命令来运行它:
jython -Dpython.path=./hbase-1.4.8/lib/hbase-common-1.4.8.jar test1.py
我现在收到以下错误消息:
Traceback(最近一次调用最后一次):文件“test1.py”,第 2 行,在 从 org.apache.hadoop.hbase 导入 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) 在 java.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.java:122) 在 org.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.findClass(SyspathJavaLoader.java:131) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 22 更多
java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/apache/hadoop/io/RawComparator
我该如何解决这个问题?
【问题讨论】: