Не удалось сохранить фрейм данных Spark в виде таблицы в HDP 3.0

У меня есть один кадр данных, который я пытаюсь сохранить как таблицу кустов. Я пробовал все возможные способы, но не смог сохранить его как таблицу в HDP 3.0. Я использую приведенный ниже код.

    var sparksession =  SparkSession.builder()
    .appName("appname")
    .config("hive.exec.dynamic.partition",  "true")
    .config("hive.exec.dynamic.partition.mode",   "nonstrict")
    .config("spark.sql.sources.maxConcurrentWrites","1")
    .config("hive.support.concurrency", "true")
    .config("parquet.compression", "SNAPPY")
    .config("parquet.enable.dictionary", "false")
    .config("spark.sql.parquet.compression.codec", "snappy")
    .config("hive.mapred.mode", "nonstrict")
    .config("spark.sql.hive.hiveserver2.jdbc.url","url")
    .enableHiveSupport()
    .getOrCreate()

    val hive = com.hortonworks.spark.sql.hive.llap.HiveWarehouseBuilder.session(sparksession).build()
    hive.setDatabase("testdb")
    val d1="select id,name,salary,city from testdb.test";
    val d2=hive.executeQuery(d1)
    d2.show //showing hive table's data.

    d2.write.format("orc").mode("append").saveAsTable("testdb.test_2")
  //test_2 table is already  created in testdb database.
    //but here getting error 'testdb' not found

    d2.write.format("orc").mode("append").saveAsTable("default.test_2")

    //if am using default then its not giving any error but saving data in 
    spark metadata not as a hive table.
    //same code is working fine in cloudera and am am getting data 
    in hive table but in hdp it's giving error.

Я пробовал методы save(), которые также работают для таблицы разделов, но я не могу использовать ведро при использовании метода сохранения. может ли кто-нибудь предложить мне, как мне сохранить этот фрейм данных непосредственно в таблицу кустов в HDP 3.0 (таблица разделена на сегменты, поэтому нельзя использовать метод сохранения)


person Up Ap    schedule 17.05.2020    source источник
comment
в чем ошибка?   -  person QuickSilver    schedule 17.05.2020
comment
База данных @QuickSilver не найдена.   -  person Up Ap    schedule 17.05.2020


Ответы (1)


Если вы устанавливаете базу данных по умолчанию для соединения с кустом на testdb через hive.setDatabase("testdb"), тогда вы должны получить доступ ко всем таблицам в ней напрямую без базы данных, например. test_2 вместо testdb.test_2

person QuickSilver    schedule 17.05.2020
comment
Пробовал и это... но во время написания я получаю эту проблему, я могу читать таблицы без имени базы данных. когда я использую метод saveAsTable по умолчанию, он берет метаданные искры. - person Up Ap; 17.05.2020