如果我查看 Imapala Shell 或 Hue,我可以为 KUDU 编写足够复杂的 IMPALA 更新语句。例如用子选择更新什么的。美好的。
查看旧的 JDBC 连接方法,例如通过 SPARK / SCALA 的 mySQL,通过这种连接进行复杂更新的可能性不大,这是可以理解的。但是,有了 KUDU,我认为情况会发生变化。
查看关于 KUDU - Apache KUDU - 使用 Apache KUDU 开发应用程序的文档,以下问题:
- 目前尚不清楚我是否可以通过 IMPALA JDBC 驱动程序从 SPARK / SCALA 环境发出复杂的更新 SQL 语句(由于 KUDU 的安全问题)。
在 SPARK KUDU 原生模式中,DML 似乎与带有 INSERT 和 UPSERT 的数据框方法相关联。如果我只想编写像 UPDATE 这样的自由格式 SQL DML 语句怎么办?我看到我们可以使用 Spark SQL 将(默认视为 UPSERT)插入到 Kudu 表中。例如
sqlContext.sql(s"INSERT INTO TABLE $kuduTableName SELECT * FROM source_table")
- 我对 SPARK SQL INSERT ... 的理解是,KUDU 表也必须是临时表。我不能直接接近它。那么,考虑到这一切,我们如何才能直接在 SPARK 中处理 KUDU 表呢?我们不能在 SPARK / KUDU 中,并且通过 Impala JDBC 连接通过 SPARK SCALA / KUDU 或 SPARK SCALA 到 KUDU 的复杂 UPDATES 语句也不允许这样做。在我注意到的某些情况下,我可以通过带有保存的环境变量的 shell 脚本来做一些事情。