SparkSQL、Thrift 服务器和 Tableau
Posted
技术标签:
【中文标题】SparkSQL、Thrift 服务器和 Tableau【英文标题】:SparkSQL, Thrift Server and Tableau 【发布时间】:2015-07-23 20:25:58 【问题描述】:我想知道是否有一种方法可以使sqlContext
中的sparkSQL
表对其他进程(例如Tableau)直接可见。
我对thrift server做了一些研究,但没有找到任何具体的解释。它是 Hive(数据库)和应用程序(客户端)之间的中间件吗?如果是这样,我是否需要在我的 spark 程序中写入 Hive 表?
当我使用 Beeline 从 thrift 服务器检查表时,有一个字段 isTempTable
。我能知道这是什么意思吗?我猜它是 thrift 服务器的sqlContext
中的一个临时表,因为我读到了一些关于它的信息,它是一个 spark 驱动程序,所有缓存的表都可以通过多个程序看到。我的困惑是,如果是驱动程序,工人在哪里?
总结一下,
-
我应该将我的 DataFrame 或 sqlContext 中的表写到哪里?我应该使用哪种方法(例如
dataFrame.write.mode(SaveMode.Append).saveAsTable()
)?
是否应为 Thrift 服务器使用默认设置?或者是否有必要进行更改?
谢谢
【问题讨论】:
【参考方案1】:我假设您现在已经继续前进,但是对于遇到此答案的任何人来说,Thrift 服务器实际上是 JDBC 连接和 SparkSQL 之间的代理。
一旦您运行 Thrift(请参阅 Spark docs 了解基本介绍),您可以使用 Hive JDBC drivers 通过 JDBC 连接到 Thrift,然后它会使用 HiveContext 将您的 SQL 查询中继到 Spark。
如果您已启动并运行完整的 Hive 元存储,您应该能够立即在 JDBC 客户端中看到 Hive 表,否则您可以通过在 JDBC 客户端中运行如下命令来按需创建表:
CREATE TABLE data1 USING org.apache.spark.sql.parquet OPTIONS (path "/path/to/parquetfile");
CREATE TABLE data2 USING org.apache.spark.sql.json OPTIONS (path "/path/to/jsonfile");
希望这会有所帮助。
【讨论】:
以上是关于SparkSQL、Thrift 服务器和 Tableau的主要内容,如果未能解决你的问题,请参考以下文章
「Spark」Spark SQL Thrift Server运行方式