Я создал временное представление с input.createOrReplaceTempView ("test") для преобразования с помощью spark- sql и безуспешно пытаюсь выполнить следующее преобразование
Input : StructField(images,ArrayType(StructType(StructField(big_image,StringType,true), StructField(url,StringType,true)),true),true)
Expected Output : StructField(images,ArrayType(StructType(StructField(url,StringType,true)),true),true)
Actual output : StructType(StructField(images,ArrayType(StringType,true),true))
Может кто-нибудь дать мне какую-то идею преобразуйте то же самое, используя набор данных искры в Java. Я попробовал следующее, что является фактическим выходом. Пожалуйста, исправьте меня
Dataset<Row> images = this.spark.sql(
"select "
+ "images.url as images "
+ "from test");
Ввод:
{
"images" : [{
"big_image : "",
"url" :""
}]
}
Ожидаемый результат:
{
"images" : [{
"url" :""
}]
}
Может кто-нибудь Пожалуйста, помогите мне получить это отсортировано.
Спасибо в adv
Ввод:
root
|-- images: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- big_image: string (nullable = true)
| | |-- url: string (nullable = true)
ОБНОВЛЕНИЕ: Попробовал следующее без удачи.
Dataset<Row> images = this.spark.sql(
"select array(struct(images.url)) as images "
+ "from test");
Теперь я вижу, что URL-адрес, которым я хочу быть простым строковым значением, становится массивом.
Фактический результат:
root
|-- images: array (nullable = false)
| |-- element: struct (containsNull = false)
| | |-- url: array (nullable = true)
| | | |-- element: string (containsNull = true)
Ожидаемый результат:
root
|-- images: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- url: string (nullable = true)