使用配置单元上下文,在本地系统metastore\u db中本地创建配置单元表,而不是在集群上,将my hive-site.xml放在何处

svgewumm  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(274)

我已经创建了一个spark上下文对象,并尝试从hadoop服务器上的文本文件(不是在我的本地)检索文本,我能够检索到它。
当我试图检索配置单元表(在独立计算机、集群上)时,我做不到,当我创建配置单元表时,它将在metastore\u db中本地创建
sql(“创建表yahoo\u orc\u table(date string,open\u price float,high\u price float,low\u price float,close\u price float,volume int,adj\u price float)存储为orc”)
我试着设置metastore
objhivecontext.setconf(“hive.metastore.warehouse.dir”,”hdfs://serverip:hiveportnum/apps/hive/warehouse“)
&&另外还有objhivecontext.hql(“设置hive.metastore.warehouse.dir=hdfs://serverip:portnumber/apps/hive/warehouse“)
我甚至在spark machine conf文件夹中放置了配置单元站点xml,
如何使我的scala应用程序联系hive-site.xml并从该xml获取元存储信息,以及应将我的hive-site.xml放在何处
我把它放在了我的应用程序中,就像建议在classpath中添加的地方一样,我添加了,并且可以看到mypom.xml文件的正上方,但是我的scala应用程序仍然处于本地模式
表(yahoo\u orc\u table)是在d:\user\hive\warehouse中本地创建的

epfja78i

epfja78i1#

唯一应该放在spark conf目录中的地方。如果你把它放在那里,但仍然没有工作,那就意味着问题出在其他地方,可能在hive-site.xml的内容中。

e3bfsja2

e3bfsja22#

这个问题在spark2上得到了解决,在将配置单元站点xml文件放入spark machine conf文件夹后,您可以使用:

import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.master("local[2]")
.appName("interfacing spark sql to hive metastore without configuration file")
.config("hive.metastore.uris", "thrift://host:port") // replace with your hivemetastore service's thrift url
.enableHiveSupport() // don't forget to enable hive support
.getOrCreate()

spark.sql("create table yahoo_orc_table (date STRING, open_price FLOAT, high_price FLOAT, low_price FLOAT, close_price FLOAT, volume INT, adj_price FLOAT) stored as orc")

这段代码在集群的hive中创建表“yahoo\u orc\u table”。

相关问题