我创建了一个启动spark(local[*]
)的java应用程序,并利用它将csv文件作为Dataset<Row>
读取,并使用createOrReplaceTempView
创建临时视图。
此时我可以利用SQL查询应用程序中的视图。
出于开发和调试的目的,我想做的是从应用程序外部以交互方式执行查询。
任何提示?
提前致谢
答案 0 :(得分:0)
你可以使用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配置和当前数据库。