当前位置: 首页 > 知识库问答 >
问题:

如何在没有下载配置单元的情况下连接到远程配置单元服务器?

慕承恩
2023-03-14

我正在尝试访问一个没有在我的计算机上下载配置单元的配置单元群集。我在这里读到,我只需要一个jdbc客户机就可以这样做。我有配置单元群集的url、用户名和密码。我尝试用这些创建hive-site.xml,并以编程方式进行,尽管这种方法似乎没有输入用户名和密码的地方。无论我做什么,似乎下面的错误使我无法访问配置单元:无法实例化org.apache.hadoop.hive.ql.metadata.sessionHiveMetaStoreClient

我觉得这是因为我没有在我的计算机上下载配置单元从这个错误的答案在线。在这里我到底需要做什么才能在没有下载配置单元的情况下访问它,还是我实际上必须下载它?下面是我的代码供参考:

spark = SparkSession \
.builder \
.appName("interfacing spark sql to hive metastore without 
configuration file") \
.config("hive.metastore.uris", "https://prod-fmhdinsight- 
eu.azurehdinsight.net") \
.enableHiveSupport() \
.getOrCreate()

data = [('First', 1), ('Second', 2), ('Third', 3), ('Fourth', 4), 
('Fifth', 5)]
df = spark.createDataFrame(data)
# see the frame created
df.show()
# write the frame
df.write.mode("overwrite").saveAsTable("t4")

和hive-site.xml:

<configuration>

<property> 
    <name>hive.metastore.uris</name> 

    <value>https://prod-fmhdinsight-eu.azurehdinsight.net</value>
</property>
<!--
<property>
    <name>hive.metastore.local</name>
    <value>true</value>
</property>
<-->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>https://prod-fmhdinsight-eu.azurehdinsight.net</value>
    <description>metadata is stored in a MySQL server</description>
</property>

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>MySQL JDBC driver class</description>
</property>

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>username</value>
    <description>user name for connecting to mysql server 
</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>password</value>
    <description>password for connecting to mysql server 
</description>
</property>

共有1个答案

阚吕恭
2023-03-14

TL;DR将Spark.SQL.hive.maftore.jars配置属性与maven一起使用,让Spark SQL下载所需的JAR。

其他选项是builtin(它只是假设配置单元1.2.1)和配置单元JAR的类路径(例如spark.sql.Hive.m转移.JARs=“/users/jacek/dev/apps/Hive/lib/*”)。

如果您的配置单元转移可以通过Trift协议远程使用,您可能希望创建$spark_home/conf/hive-site.xml,如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://localhost:9083</value>
  </property>
</configuration>

Hive的一个很好的特性是将配置属性定义为系统属性,因此上面的内容如下所示:

$SPARK_HOME/bin/spark-shell \
  --driver-java-options="-Dhive.metastore.uris=thrift://localhost:9083"

您可能希望将以下内容添加到conf/log4j.properties中以获得更低级别的日志记录:

log4j.logger.org.apache.spark.sql.hive.HiveUtils$=ALL
log4j.logger.org.apache.spark.sql.internal.SharedState=ALL
 类似资料:
  • 我正在将HiveContext与SparkSQL一起使用,并试图连接到远程配置单元元存储,设置配置单元元存储的唯一方法是包含配置单元站点。类路径上的xml(或将其复制到/etc/spark/conf/)。 有没有一种方法可以在java代码中以编程方式设置此参数,而不包括配置单元站点。xml?如果是的话,使用什么样的Spark配置?

  • 我正在使用RJDBC 0.2-5连接到Rstudio中的Hive。我的服务器有hadoop-2.4.1和hive-0.14。我按照下面提到的步骤连接到Hive。 但我总是会遇到以下错误: 错误。jcall(drv@jdrv,“Ljava/sql/Connection;”,“连接”,如图所示。字符(url)[1],:java。lang.NoClassDefFoundError:无法初始化类组织。阿帕

  • 在设备上没有安装Google Play服务(aosp)的情况下,是否可以使用Firebase Remote Config? 我确实在我的android项目中遵循了这个设置:(通过https://firebase.google.com/docs/android/setup): 将类路径'com.google.gms:google-services:4.3.3'添加到主分级文件 将实现“com.goo

  • 我正在尝试连接Hive数据库与我的Java代码。我搜索了很多关于Hive_Client的信息,但是有很多错误和依赖,有人能帮我找到代码和库文件吗。

  • 问题内容: 我正在尝试设置spring xml配置,而不必创建进一步的。但是,即使我将数据库属性包括在 spring.xml: 我在这里想念什么? 问题答案: 在entityManagerFactory bean定义中指定“ packagesToScan”和“ persistenceUnitName”属性。 请注意,这适用于Spring版本> 3.1

  • 我正在尝试在运行时重新加载应用程序的配置。配置位于yaml文件中,与ConfigurationProperties的绑定按预期工作。接下来就是。我想在yaml更改后重新加载配置。或者更确切地说,我正在使用预定的检查文件是否已更改。 我希望避免运行第二台服务器来更新我的环境。我有两个问题: 如何更新环境,也许? 我如何传播这些? Spring云配置文档说明: 只要您能够实际更改环境并发布事件,Env