Spark Java Преобразование набора данных без атрибута в DF поверх данных Josn - PullRequest
0 голосов
/ 22 марта 2020

Я создал временное представление с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...