如何使用 apache spark 访问从 impala 创建的 apache kudu 表
Posted
技术标签:
【中文标题】如何使用 apache spark 访问从 impala 创建的 apache kudu 表【英文标题】:How to access to apache kudu table created from impala using apache spark 【发布时间】:2017-05-23 22:16:29 【问题描述】:我下载了 apache kudu 的快速启动虚拟机,并按照示例在此页面中出现https://kudu.apache.org/docs/quickstart.html,实际上我创建了名为“sfmta”的表,但是当我尝试使用访问 kudu 表时spark-shell 加上下面这句话:
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 创建的吗?
提前致谢。
【问题讨论】:
【参考方案1】:在向 kudu 邮件用户组询问后,我终于找到了这个问题的答案。
在http://quickstart.cloudera:8051/tables检查表名后,我可以看到我想查询的表的全名,而不是使用“sfmta”,我应该使用“impala::default.sfmta”,如下所示:
val df = spark.sqlContext.read.options(Map("kudu.master" -> "quickstart.cloudera:7051","kudu.table" -> "impala::default.sfmta")).kudu
所以在替换表名后它起作用了。
【讨论】:
【参考方案2】:如果你创建一个数据库(而不是“默认”),表应该是,
impala:database_name.table_name
【讨论】:
【参考方案3】:Will 的答案可能有误。更正一个(2 个冒号):
impala::database_name.table_name
对于默认数据库:
impala::default.table_name
已使用 CDH 5.1X 和 Spark 1.6.X 进行了测试。我希望这会节省您的时间。
【讨论】:
以上是关于如何使用 apache spark 访问从 impala 创建的 apache kudu 表的主要内容,如果未能解决你的问题,请参考以下文章
如何在Spark提交中使用s3a和Apache spark 2.2(hadoop 2.8)?
从 Apache Spark Streaming 上下文访问 JAR 中资源目录中的文件
如何在 Spark Submit 中将 s3a 与 Apache spark 2.2(hadoop 2.8) 一起使用?
org.apache.spark.sql.AnalysisException:无法从概率中提取值