SparkSQL,Thrift Server和Tableau

时间:2015-07-23 20:25:59

标签: apache-spark hive apache-spark-sql

我想知道是否有一种方法可以使sparkSQL中的sqlContext表直接被其他进程看到,例如Tableau。

我对thrift服务器进行了一些研究,但我没有找到任何具体的解释。它是Hive(数据库)和应用程序(客户端)之间的中间件吗?如果是这样,我是否需要在我的spark程序中写入Hive表?

当我使用Beeline从thrift服务器检查表时,有一个字段isTempTable。我能知道它是什么意思吗?我猜它是thrift服务器的sqlContext中的一个临时表,因为我读到的是一个火花驱动程序,所有缓存的表都可以通过多个程序看到。我的困惑在于,如果是司机程序,工人在哪里?

总结一下,

  1. 我应该在哪里编写我的DataFrame或sqlContext中的表?我应该使用哪种方法(如dataFrame.write.mode(SaveMode.Append).saveAsTable())?
  2. 是否应将默认设置用于thrift服务器?或者是必要的更改?
  3. 谢谢

1 个答案:

答案 0 :(得分:8)

我认为你现在已经开始了,但对于遇到这个答案的人来说,Thrift服务器实际上是JDBC连接和SparkSQL之间的代理。

一旦你有Thrift运行(参见Spark docs了解基本介绍),你可以使用Hive JDBC drivers连接到Thrift,然后将你的SQL查询转发给Spark使用HiveContext。

如果你有一个完整的Hive Metastore,你应该可以立即在JDBC客户端看到Hive表,否则你可以通过在JDBC客户端运行这样的命令来按需创建表:

current_user

希望这有点帮助。