Как читать данные в искровой DF при изменении имени столбца и изменении типа данных - PullRequest
0 голосов
/ 07 октября 2019

У меня есть данные паркета со следующей схемой,

Id:int,
Name:String

На более поздней стадии новая схема входящих данных была изменена на

Id:double/long,
NAME:String
  1. Изменение типа
  2. Изменение имени поля

У меня есть обе данные схемы паркета в одной папке. Как я могу прочитать обе схемы в spark.read.format("parquet").load("")?

Любойбудет полезен совет специалиста.

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

В одноразовом сценарии предлагается привести тип данных и переписать целевой файл паркета.

scala> val  df = Seq((1, "as"), (2, "fd")).toDF("a", "b")
df: org.apache.spark.sql.DataFrame = [a: int, b: string]

scala> df.show
+---+---+
|  a|  b|
+---+---+
|  1| as|
|  2| fd|
+---+---+

scala> df.withColumn("a", $"a".cast("double")).show
+---+---+
|  a|  b|
+---+---+
|1.0| as|
|2.0| fd|
+---+---+

Если нет, то вам необходимо обновить исходную систему с той же логикой

0 голосов
/ 08 октября 2019

Как правило, в этом сценарии я создаю версию v2 этой таблицы и разделяю мои файлы паркета. Технически это две разные таблицы.

Если вам нужно связать их вместе, вы можете создать второй слой и направить обе эти таблицы в новую таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...