InsertInto (имя таблицы) всегда сохраняет Dataframe в базе данных по умолчанию в Hive - PullRequest
0 голосов
/ 03 апреля 2020

Привет, у меня в улье 2 таблицы, в которых из первой таблицы я выбираю данные, создаю фрейм данных и сохраняю этот фрейм данных в другую таблицу в формате * или 1008 *. Я создал обе таблицы в одной базе данных. когда я сохраняю этот фрейм данных во 2-ю таблицу, я получаю таблицу, не найденную в проблеме с базой данных. и если я не использую какое-либо имя базы данных, она всегда создает и сохраняет мой df в базе данных по умолчанию для куста. Может кто-нибудь подсказать мне, почему он не принимает определяемые пользователем База данных и всегда принимать в качестве базы данных по умолчанию? Ниже приведен код, который я использую, а также я использую HDP.

    //creating hive session
    val hive = com.hortonworks.spark.sql.hive.llap.HiveWarehouseBuilder.session(sparksession).build()
    hive.setDatabase("dbname")
    var a= "SELECT 'all columns' from  dbname.tablename"
    val a1=hive.executeQuery(a)
    a1.write
    .format("com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector")
    .option("database", "dbname")
    .option("table", "table_name")
    .mode("Append")
    .insertInto("dbname.table_name")

вместо insertInto (dbname.table_name), если я использую insertInto (table_name), то его сохраняет фрейм данных в базе данных по умолчанию. Но если я даю dbname.tablename, то его таблица показа не найдена в базе данных. Я также пытался сделать то же самое, используя dbSession, используя.

    val dbSession = HiveWarehouseSession.session(sparksession).build()
    dbSession.setDatabase("dbname")

Примечание. Моя вторая таблица (целевая таблица, в которую я записываю данные) - это секционированная таблица с разбивкой.

1 Ответ

0 голосов
/ 06 апреля 2020

// 2. partitionBy (...)

{    a1.write
 .format("com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector")
 .option("database", "dbname")
 .option("table", "table_name")
 .mode("Append")
 .insertInto("dbname.table_name")
 // My second table(target table where I'm writing data) is a partitioned and bucketed table. add .partitionBy(<list cols>)

}

...