在Python中以编程方式启动HiveThriftServer

2024-04-28 23:03:54 发布

您现在位置:Python中文网/ 问答频道 /正文

在spark shell(scala)中,我们导入, org.apache.spark网站.sql.hive.thriftserver._ 为特定的配置单元上下文以编程方式启动配置单元节约服务器 HiveThriftServer2.startWithContext(hiveContext)为该特定会话公开已注册的临时表。在

如何使用python实现同样的功能?python上是否有用于导入HiveThriftServer的包/api?任何其他想法/建议。在

我们使用pyspark创建了一个数据帧

谢谢

拉维·纳拉亚南


Tags: org服务器sql网站apache编程方式shell
1条回答
网友
1楼 · 发布于 2024-04-28 23:03:54

您可以使用py4javagateway导入它。以下代码适用于spark2.0.2,可以通过beeline查询python脚本中注册的临时表。在

from py4j.java_gateway import java_import
java_import(sc._gateway.jvm,"")

spark = SparkSession \
        .builder \
        .appName(app_name) \
        .master(master)\
        .enableHiveSupport()\
        .config('spark.sql.hive.thriftServer.singleSession', True)\
        .getOrCreate()
sc=spark.sparkContext
sc.setLogLevel('INFO')

#Start the Thrift Server using the jvm and passing the same spark session corresponding to pyspark session in the jvm side.
sc._gateway.jvm.org.apache.spark.sql.hive.thriftserver.HiveThriftServer2.startWithContext(spark._jwrapped)

spark.sql('CREATE TABLE myTable')
data_file="path to csv file with data"
dataframe = spark.read.option("header","true").csv(data_file).cache()
dataframe.createOrReplaceTempView("myTempView")

然后去beeline检查它是否正确启动:

^{pr2}$

它应该显示用python创建的表和临时表/视图,包括上面的“myTable”和“myTempView”。为了查看临时视图,有必要使用相同的spark会话

(参见ans:Avoid starting HiveThriftServer2 with created context programmatically
注意:即使Thrift服务器从终端启动并连接到同一个元存储,也可以访问配置单元表,但是临时视图无法访问,因为它们在spark会话中,并且不会写入元存储)

相关问题 更多 >