0

我正在编写一个 Java Spark 应用程序,它需要连接到 hive 并获取一些基本的表信息并查询该表的数据。我正在创建一个火花会话并获取如下信息。但这使用节俭服务器。我想看看我是否可以在不使用 Thrift 服务器的情况下做同样的事情。这可能吗?我该怎么做?我正在尝试编写一个 JDBC 客户端,该客户端可以通过 sparkSQL 连接到 spark 以访问配置单元表,但不使用节俭服务器。请就如何处理此问题提供您的想法和建议。谢谢你。

SparkSession spark = SparkSession
              .builder()
              .appName(" Hive example")
              .enableHiveSupport()
              .getOrCreate();

           Dataset<Row> df = spark.read()
              .format("jdbc")
               .option("driver", "org.apache.hive.jdbc.HiveDriver")
              .option("url", " jdbc:hive2://host:port")
              .option("dbtable", "mytable")
              .option("fetchsize", "20")
              .load();
        df.show();
4

1 回答 1

0

使用 Spark 2,您可以尝试这样的事情,

SparkSession ss = SparkSession
.builder()
.appName(" Hive example")
.config("hive.metastore.uris", "thrift://localhost:9083")
.enableHiveSupport()
.getOrCreate();

请注意该hive.metastore.uris属性,将 localhost 更改为指向您的沙箱或集群。

一个ss已初始化,您可以阅读如下表格,

val df = ss.read.table("db_name.table_name")

JDBC方式:

spark.read
    .format("jdbc")
    .option("url", "jdbc:hive2://localhost:10000/default")
    .option("dbtable", "clicks_json")
    .load()

希望这可以帮助。干杯。

于 2018-05-10T21:36:35.360 回答