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

如何在没有配置单元站点的情况下将Spark SQL连接到远程配置单元元存储(通过thrift协议)。xml?

姬坚成
2023-03-14

我正在将HiveContext与SparkSQL一起使用,并试图连接到远程配置单元元存储,设置配置单元元存储的唯一方法是包含配置单元站点。类路径上的xml(或将其复制到/etc/spark/conf/)。

有没有一种方法可以在java代码中以编程方式设置此参数,而不包括配置单元站点。xml?如果是的话,使用什么样的Spark配置?

共有3个答案

解高昂
2023-03-14

我也面临同样的问题,但解决了。只需在火花2.0版本中遵循以下步骤

或者将MySQL驱动程序添加到Maven/SBT(如果使用这些驱动程序

步骤3:当你创建火花会话添加enableHiveSupport()

val spark=火花会话。建设者大师(“本地”)。appName(“测试”)。enableHiveSupport()。getOrCreate()

示例代码:

package sparkSQL

/**
  * Created by venuk on 7/12/16.
  */

import org.apache.spark.sql.SparkSession

object hivetable {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder.master("local[*]").appName("hivetable").enableHiveSupport().getOrCreate()

    spark.sql("create table hivetab (name string, age int, location string) row format delimited fields terminated by ',' stored as textfile")
    spark.sql("load data local inpath '/home/hadoop/Desktop/asl' into table hivetab").show()
    val x = spark.sql("select * from hivetab")
    x.write.saveAsTable("hivetab")
  }
}

输出:

沈曜灿
2023-03-14

在spark 2.0中。应该是这样的:

别忘了用你的hive.metastore.uris替换。这假设你已经启动了蜂巢转移服务(不是蜂巢服务器)。

 val spark = SparkSession
          .builder()
          .appName("interfacing spark sql to hive metastore without configuration file")
          .config("hive.metastore.uris", "thrift://localhost:9083") // replace with your hivemetastore service's thrift url
          .enableHiveSupport() // don't forget to enable hive support
          .getOrCreate()

        import spark.implicits._
        import spark.sql
        // create an arbitrary frame
        val frame = Seq(("one", 1), ("two", 2), ("three", 3)).toDF("word", "count")
        // see the frame created
        frame.show()
        /**
         * +-----+-----+
         * | word|count|
         * +-----+-----+
         * |  one|    1|
         * |  two|    2|
         * |three|    3|
         * +-----+-----+
         */
        // write the frame
        frame.write.mode("overwrite").saveAsTable("t4")
汪正雅
2023-03-14

对于Spark 1。x、 您可以设置:

System.setProperty("hive.metastore.uris", "thrift://METASTORE:9083");

final SparkConf conf = new SparkConf();
SparkContext sc = new SparkContext(conf);
HiveContext hiveContext = new HiveContext(sc);

或者

final SparkConf conf = new SparkConf();
SparkContext sc = new SparkContext(conf);
HiveContext hiveContext = new HiveContext(sc);
hiveContext.setConf("hive.metastore.uris", "thrift://METASTORE:9083");

更新如果您的蜂巢是Kerberated:

在创建HiveContext之前,请尝试设置这些选项:

System.setProperty("hive.metastore.sasl.enabled", "true");
System.setProperty("hive.security.authorization.enabled", "false");
System.setProperty("hive.metastore.kerberos.principal", hivePrincipal);
System.setProperty("hive.metastore.execute.setugi", "true");
 类似资料:
  • 我正在尝试访问一个没有在我的计算机上下载配置单元的配置单元群集。我在这里读到,我只需要一个jdbc客户机就可以这样做。我有配置单元群集的url、用户名和密码。我尝试用这些创建hive-site.xml,并以编程方式进行,尽管这种方法似乎没有输入用户名和密码的地方。无论我做什么,似乎下面的错误使我无法访问配置单元:无法实例化org.apache.hadoop.hive.ql.metadata.ses

  • 我们正试图在Linux服务器上启动hive元存储,但我们面临一个问题。如果我们尝试使用以下命令启动配置单元元存储服务: sudo hive服务转移 我们会遇到很多这样的错误: 原因:java.sql。SQLException:拒绝用户“hive”@“sandbox.hortonworks的访问。com“(使用密码:YES)在com.mysql.jdbc.SQLError.createSQLExce

  • 我使用Hortonworks Hadoop HDP-2.3.2.0-2950 Hive over Tez引擎 下面2个查询来自Java代码。 ——运行良好 ——失败并出现错误 我的代码:

  • 直线>!连接JDBC:hive2://bigdatamr:10000/default连接到JDBC:hive2://bigdatamr:10000/default输入JDBC:hive2://bigdatamr:10000/default:myusername输入JDBC:hive2://bigdatamr:10000/default:myusername输入密码/bigdatamr:10000/

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