在我的 java 应用程序之外查询我的临时表



我创建了一个启动 spark ( local[*] ) 的 Java 应用程序,并利用它读取 csv 文件作为Dataset<Row>并使用 createOrReplaceTempView 创建一个临时视图。

此时,我能够利用SQL来查询应用程序内部的视图。

出于开发和调试目的,我想做的是从应用程序外部以交互方式执行查询。

有什么提示吗?

提前致谢

你可以使用 Spark 的 DeveloperApi - HiveThriftServer2。

@DeveloperApi
  def startWithContext(sqlContext: SQLContext): Unit = {
    val server = new HiveThriftServer2(sqlContext)

在应用程序中,您唯一需要做的就是获取SQLContext并按如下方式使用它:

HiveThriftServer2.startWithContext(sqlContext)

这将启动 hive thrift 服务器(默认情况下在端口 10000 上),您可以使用 sql 客户端 - 例如 beeline用于访问和查询临时表中的数据。

此外,您还需要设置允许您查看临时表的--conf spark.sql.hive.thriftServer.singleSession=true。默认情况下,它设置为 false,因此每个连接都有自己的会话,并且他们看不到其他临时表。

"spark.sql.hive.thriftServer.singleSession" - 设置为 true 时,Hive Thrift 服务器在单个会话中运行 模式。所有 JDBC/ODBC 连接共享临时视图、函数注册表、SQL 配置和当前数据库。

相关内容

  • 没有找到相关文章

最新更新