我将hivecontext与sparksql结合使用,并尝试连接到远程配置单元元存储,设置配置单元元存储的唯一方法是在类路径中包含hive-site.xml(或将其复制到/etc/spark/conf/)。
有没有一种方法可以在不包含hive-site.xml的java代码中以编程方式设置此参数?如果是的话,使用什么样的spark配置?
我将hivecontext与sparksql结合使用,并尝试连接到远程配置单元元存储,设置配置单元元存储的唯一方法是在类路径中包含hive-site.xml(或将其复制到/etc/spark/conf/)。
有没有一种方法可以在不包含hive-site.xml的java代码中以编程方式设置此参数?如果是的话,使用什么样的spark配置?
8条答案
按热度按时间pgky5nke1#
一些类似的问题被标记为重复,这是从spark连接到hive而不使用
hive.metastore.uris
或者分离thrift服务器(9083),并且不将hive-site.xml复制到spark\ u conf\ u目录。gcuhipw92#
spark版本:2.0.2
配置单元版本:1.2.1
下面是我从spark连接到hive元存储的java代码:
8e2ybdfx3#
对于spark 1.x,可以设置为:
或者
如果您的Hive已被kerberized,请更新:
在创建hivecontext之前,请尝试设置这些选项:
pdtvr36n4#
设置spark.hadoop.metastore.catalog.default=hive对我有效。
wbgh16ku5#
在spark 2.0中,+应该是这样的:
别忘了用你的替换“hive.metastore.uris”。这假设您已经启动了一个配置单元元存储服务(不是配置单元服务器)。
mbjcgjjk6#
在hadoop 3中,spark和hive目录是分开的,因此:
对于Spark壳(随附
.enableHiveSupport()
默认情况下)只需尝试:对于spark提交作业,创建如下spark会话:
然后在spark submit命令中添加以下conf:
但是对于orc表(以及更一般的内部表),建议使用hivewarehouse连接器。
lstz6jyr7#
下面的代码对我有用。我们可以忽略
hive.metastore.uris
对于本地元存储,spark将在本地的备用仓库目录中创建配置单元对象。tyky79it8#
我也面临同样的问题,但解决了。在spark 2.0版本中只需执行以下步骤
步骤1:将hive-site.xml文件从hive conf文件夹复制到spark conf。
第二步:编辑spark-env.sh文件并配置mysql驱动程序(如果您使用mysql作为配置单元元存储。)
或者向maven/sbt添加mysql驱动程序(如果使用这些驱动程序的话)
步骤3:创建spark会话时添加enablehivesupport()
val spark=sparksession.builder.master(“local”).appname(“testing”).enablehivesupport().getorcreate()
示例代码:
输出: