如果我查看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脚本来做一些事情。
1条答案
按热度按时间cs7cruho1#
这方面的文件太差了。
dml插入,更新。。。可能通过下面的“方法”,一些例子:
如果使用相应的stmt.executequery,则返回一个java结果集,这与从jdbc源代码读取并持久化结果的更标准方法不同。给我一个小小的惊喜。可能需要两种方法,一种用于更常规的选择,另一种用于工作dml非选择。不确定是否可以都在同一个程序模块中。换个时间吧。是的,它可以。