【问题标题】:Connection to spark and accessing hive table without thrift server在没有 Thrift 服务器的情况下连接到 spark 和访问 hive 表
【发布时间】:2018-10-21 05:09:34
【问题描述】:

我正在编写一个 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();

【问题讨论】:

    标签: apache-spark jdbc spark-thriftserver


    【解决方案1】:

    使用 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()
    

    希望这会有所帮助。干杯。

    【讨论】:

    • 但这仍在使用thrift server。我想避免使用节俭服务器。那可能吗?并非所有平台都支持 Thrift 服务器。
    • 有两种方式,JDBC或者thrift
    • 好的,谢谢。如果您有任何使用 JDBC 的示例,请分享。谢谢。
    • JDBC 是您在问题中提到的。更新答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多