如何使用apachespark访问由impala创建的apachekudu表

s2j5cfk0  于 2021-06-26  发布在  Impala
关注(0)|答案(3)|浏览(451)

我下载了apachekudu的quickstart vm,并按照本页中的示例进行了操作https://kudu.apache.org/docs/quickstart.html,事实上,我创建了名为“sfmta”的表,但当我尝试使用spark shell访问kudu表时,使用以下语句:

val df = spark.sqlContext.read.options(Map("kudu.master" -> "quickstart.cloudera:7051","kudu.table" -> "sfmta")).kudu

我得到这个错误

org.apache.kudu.client.NonRecoverableException: The table does not exist: table_name: "sfmta"

我也尝试过指定不同的表名,比如“default:sfmta“,”default::sfmta“具有相同的结果。你能告诉我为什么会这样吗?为什么我不能访问kudu表?这是和 Impala 一起创造的吗?
提前谢谢。

2cmtqfgy

2cmtqfgy1#

最后在向Kudu邮件用户群提问后我找到了这个问题的答案。
在检查表名之后http://quickstart.cloudera:8051/tables我可以看到要查询的表的全名,我应该使用“impala::default.sfmta”而不是使用“sfmta”,如下所示:

val df = spark.sqlContext.read.options(Map("kudu.master" -> "quickstart.cloudera:7051","kudu.table" -> "impala::default.sfmta")).kudu

所以在替换表名之后,它就工作了。

bqujaahr

bqujaahr2#

可能威尔的答案有误。正确的一个(2个冒号):

impala::database_name.table_name

对于默认数据库:

impala::default.table_name

用cdh5.1x和spark1.6.x测试。我希望这能节省你的时间。

w8ntj3qf

w8ntj3qf3#

如果您创建了一个数据库(而不是“default”),那么表应该是,
impala:database_name.table_name

相关问题