Создание Spark-приложения на локальном сервере, как мы можем получить доступ к Hive Warehouse, расположенному в HDInsight - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь подключиться к каталогу хранилища Hive, расположенному в HDInsight, с помощью Spark local с использованием IntelliJ Maven.

Я использую Spark 1.6 с Scala и Maven Project.

Подробная информация о Комиссионном сервере:

`System.setProperty("hive.metastore.uris", `"thrift://hnaz.xyz123.internal.cloudapp.net:1403")`

Я пытаюсь получить доступ к таблицам склада улья.

Код:

package Test
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.{SQLContext, SaveMode, sources}


object TestHive {
  def main(args: Array[String]): Unit = {

    // get spark configuration
    val conf = new SparkConf()
      .setAppName("SparkHiveTest")
    conf.setMaster("local[*]")
    System.setProperty("hive.metastore.uris", "thrift://hnaz.xyz123.internal.cloudapp.net:1403")
    import org.apache.spark.sql.hive.HiveContext
    val sc = new  SparkContext(conf)
    val hiveContext = new HiveContext(sc)
    implicit val sqlContext = new SQLContext(sc)

    import org.apache.spark.sql.functions._
    import sqlContext.implicits._

    val df1 = sqlContext.sql(s"use $data_profiling, sqlContext.sql("show tables")");



  }
}

Зависимость POM:

 <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_2.11</artifactId>
            <version>${spark.version}</version>
            <scope>compile</scope>
            <!-- provided -->
        </dependency>

это выдает ошибку как

" Error:(22, 37) not found: value data_Test
    val df1 = sqlContext.sql(s"use $data_Test, sqlContext.sql("show tables")");"

Error:(22, 74) value tables is not a member of StringContext
    val df1 = sqlContext.sql(s"use $data_Test, sqlContext.sql("show tables")");

Спасибо за тонну. У меня есть только 1 сомнение. My Spark построен на локальном сервере , а Hive расположен в HDInsight . Как я могу получить доступ к Hive HDInsight от Local Spark. У меня нет есть Spark Cluster в HDInsight .

в режиме клиента.

1 Ответ

0 голосов
/ 25 октября 2019

Примечание: Метод setMaster используется для указания локального кластера. Если вы хотите запустить приложение в кластере в HDInsight, замените аргумент local [] * на URL spark: //: где и - IP-адрес и номер порта граничного узла в кластере.

В этом учебнике показано, как использовать подключаемый модуль Azure Toolkit для IntelliJ для разработки приложений Apache Spark, написанных на Scala, и затем передать их в кластер HDInsight Spark непосредственно из интегрированной среды разработки IntelliJ (IDE). ,Вы можете использовать плагин несколькими способами:

• Разработать и отправить приложение Scala Spark в кластер HDInsight Spark.

• Получить доступ к ресурсам кластера Azure HDInsight Spark.

• Локальная разработка и запуск приложения Scala Spark.

Дополнительные сведения: С Azure HDInsight 4.0 вы можете интегрировать Apache Spark и Apache Hive с помощью Hive Warehouse Connector .

Apache Hive Warehouse Connector (HWC) - это библиотека, которая позволяет вам более легко работать с Apache Spark и Apache Hive, поддерживая такие задачи, как перемещение данных между Spark DataFrames и таблицами Hive, а также управление Spark. потоковая передача данных в таблицы Hive. Hive Warehouse Connector работает как мост между Spark и Hive. Он поддерживает Scala, Java и Python для разработки.

enter image description here

Hive Warehouse Connector позволяет вам воспользоваться уникальными функциями Hive и Spark длясоздавать мощные приложения для работы с большими данными. Apache Hive предлагает поддержку транзакций базы данных, которые являются атомарными, последовательными, изолированными и надежными (ACID). Для получения дополнительной информации о ACID и транзакциях в Hive, см. Hive Transactions. Hive также предлагает подробные средства контроля безопасности с помощью Apache Ranger и аналитической обработки с низкой задержкой, недоступной в Apache Spark.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...