Я второй подход @ smart_coder, но у меня немного другой подход. Найдите его ниже.
Для выполнения запроса из куста вам нужны уникальные имена столбцов sql. sql.
вы можете динамически переименовывать имена столбцов, используя приведенный ниже код:
Ваш код:
val df = hivesql.createDataFrame(rowRDD, schema)
После этого нам нужно устранить двусмысленность, решение ниже:
var list = df.schema.map(_.name).toList
for(i <- 0 to list.size -1){
val cont = list.count(_ == list(i))
val col = list(i)
if(cont != 1){
list = list.take(i) ++ List(col+i) ++ list.drop(i+1)
}
}
val df1 = df.toDF(list: _*)
// вы получите результат, как показано ниже : result of df1.printschema ()
|-- id: string (nullable = true)
|-- sequence1: string (nullable = true)
|-- sequence: string (nullable = true)
Итак, в основном мы получаем все имена столбцов в виде списка, затем проверяем, повторяется ли какой-либо столбец более одного раза, если столбец повторяется, мы добавляя имя столбца с индексом, затем мы создаем новый фрейм данных d1 с новым списком с переименованными именами столбцов.
Я тестировал это в Spark 2.4, но он должен работать и в 1.6.