直接或通过impala jdbc驱动程序触发kudu复杂的更新语句可能吗?

w7t8yxp5  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(473)

如果我查看imapala shell或hue,我可以为kudu编写足够复杂的impala更新语句。e、 g.用sub select和what not更新。好的。
看看旧的jdbc连接方法,比如mysql通过spark/scala,通过这种连接进行复杂更新的可能性不大,这是可以理解的。不过,有了Kudu,我觉得情况变了。
查看关于kudu-apache kudu-使用apache kudu开发应用程序的文档,有以下问题:
不清楚我是否可以通过impalajdbc驱动程序从spark/scala环境发出复杂的updatesql语句(由于kudu的安全问题)。
在spark-kudu本机模式中,dml似乎与带有insert和upsert的Dataframe方法相关联。如果我只想写一个像update一样的自由格式sqldml语句呢?我看到我们可以使用sparksql将(默认情况下被视为upsert)插入到kudu表中。例如

sqlContext.sql(s"INSERT INTO TABLE $kuduTableName SELECT * FROM source_table")

我对spark sql insert的理解。。。如上所述,kudu表也必须是一个临时表。我不能直接接近它。那么,考虑到这一切,我们怎样才能直接在spark中接近kudu表呢?我们不能使用spark/kudu,通过spark-scala/kudu或通过impala-jdbc连接spark-scala到kudu的复杂更新语句也不允许这样做。在我注意到的某些情况下,我可以使用保存的env变量通过shell脚本来做一些事情。

cs7cruho

cs7cruho1#

这方面的文件太差了。
dml插入,更新。。。可能通过下面的“方法”,一些例子:

stmt.execute("update KUDU_1 set v = 'same value' where k in ('1', '4')  ;") 
stmt.execute("insert into KUDU_1 select concat(k, 'ABCDEF'), 'MASS INSERT' from KUDU_1  ;")

如果使用相应的stmt.executequery,则返回一个java结果集,这与从jdbc源代码读取并持久化结果的更标准方法不同。给我一个小小的惊喜。可能需要两种方法,一种用于更常规的选择,另一种用于工作dml非选择。不确定是否可以都在同一个程序模块中。换个时间吧。是的,它可以。

相关问题