我想知道是否有一种方法可以使sparkSQL
中的sqlContext
表直接被其他进程看到,例如Tableau。
我对thrift服务器进行了一些研究,但我没有找到任何具体的解释。它是Hive(数据库)和应用程序(客户端)之间的中间件吗?如果是这样,我是否需要在我的spark程序中写入Hive表?
当我使用Beeline从thrift服务器检查表时,有一个字段isTempTable
。我能知道它是什么意思吗?我猜它是thrift服务器的sqlContext
中的一个临时表,因为我读到的是一个火花驱动程序,所有缓存的表都可以通过多个程序看到。我的困惑在于,如果是司机程序,工人在哪里?
总结一下,
dataFrame.write.mode(SaveMode.Append).saveAsTable()
)?谢谢
答案 0 :(得分:8)
我认为你现在已经开始了,但对于遇到这个答案的人来说,Thrift服务器实际上是JDBC连接和SparkSQL之间的代理。
一旦你有Thrift运行(参见Spark docs了解基本介绍),你可以使用Hive JDBC drivers连接到Thrift,然后将你的SQL查询转发给Spark使用HiveContext。
如果你有一个完整的Hive Metastore,你应该可以立即在JDBC客户端看到Hive表,否则你可以通过在JDBC客户端运行这样的命令来按需创建表:
current_user
希望这有点帮助。