java - 如何使用java在Apache Spark程序中指定Hive的元存储?

标签 java eclipse maven apache-spark hive

我编写了一个在 Hive 上运行 SparkSQL 的 java 代码。我试图将我的配置单元元存储的路径提供给程序,但它根本不起作用。
参见程序:

String warehouseLocation = "file:${system:user.dir}/spark-warehouse";

SparkSession spark = SparkSession
            .builder()
            .appName("Java Spark Hive Example")
            .master("local[*]")
            .config("spark.sql.warehouse.dir", warehouseLocation)
            .enableHiveSupport()
            .getOrCreate();
try
{
      spark.sql("select count(*) from health1 ").show();
}
catch (Exception AnalysisException)
{
    System.out.print("\nTable is not found\n");
}

我的metastore_db位于以下位置:/home/aims/hadoop/hadoop/hive/var/lib/metastore_db 我希望我尝试使用 SparkSQL 执行的任何操作都应该通过 HIVE 反射(reflect)在 Hadoop 上。为此,我需要将 Metastore_db 连接到我的 Maven 程序。
我怎样才能做到这一点?有没有办法可以使用配置在程序中给出我的 hive-site.xml 路径?

最佳答案

您可以像下面一样运行 Hive Metastore 服务器。

hive --service metastore &

现在您可以通过设置配置hive.metastore.uris来使用Spark连接到hive

SparkSession spark = SparkSession
    .builder()
    .appName("Java Spark Hive Example")
    .master("local[*]")
    .config("hive.metastore.uris", "thrift://localhost:9083")
    .enableHiveSupport()
    .getOrCreate();

spark.sql("select count(*) from health1").show();

关于java - 如何使用java在Apache Spark程序中指定Hive的元存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42312711/

相关文章:

ide - 如何向 Eclipse 添加不同的编程语言(C++、C#、Java)

java - 我无法导入 Maven 项目选项

java - 无法与Hadoop一起使用CompositeInputFormat,抛出异常Expression为null

java - 是否可以在对象和属性属于同一类型的情况下使用@XmlInverseReference?

java - 在 java.time.LocalTime 之间(第二天)

maven - 如何在 maven 版本 :update-properties without needing to specify it in pom. xml 文件的 -DrulesUri 参数中提供我的 "rules.xml"文件?

java - 具有 RESTFul API 和静态 Web 的独立 Java 应用程序

java - Autowiring 后 Spring 更改 Map 键

java - 在 Eclipse 大纲中搜索特定的返回类型

java - 改变android中的背景颜色