从kudu的官方文档中可以看到spark 如何集成kudu的。从文档中的demo可以看到,kudu表的创建只能调用NOSQL API 来实现,无法通过spark sql直接创建一张kudu表。spark sql查询kudu表也是先注册一张临时表后,才能用sql 语句查询的。
那么有没有方法在spark sql上直接提交一个Create DDL语句来创建一张关联kudu的表呢?
答案是:可以,通过 spark sql的USING OPTIONS语法实现,该语法是spark sql用来创建外部数据源的表的,我们可以通过该语法创建kudu数据源的表。
假设我们已经通过api 创建了一张kudu表kudu_test,接下来我们要通过spark sql 去创建一张关联表,spark_kudu_test。这样我们就能够通过spark sql去操作kudu的数据了。操作步骤如下:
- 将kudu-spark2_2.11-1.10.0.jar这个jar 包拷贝到/opt目录下。jar包可以去maven仓库下载
- 进入spark sql的命令行 ./spark-sql --jars /opt/kudu-spark2_2.11-1.10.0.jar
- 执行建表语句
CREATE TABLE spark_kudu_test(id1 int, id2 int, id3 string) USING org.apache.kudu.spark.kudu OPTIONS("kudu.master" "node1:7051,node2:7051,node3:7051","kudu.table" "kudu_test");
- 就这样,kudu表的关联表就建立出来了。