Как добавить новый столбец в существующий фрейм данных, указав при этом его тип данных? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть фрейм данных: yearDF, полученный при чтении таблицы RDBMS на Postgres, которую мне нужно включить в таблицу Hive на HDFS.

  val yearDF = spark.read.format("jdbc").option("url", connectionUrl)
                         .option("dbtable", s"(${execQuery}) as year2017")
                         .option("user", devUserName)
                         .option("password", devPassword)
                         .option("numPartitions",10)
                         .load()

Прежде чем проглотить его, я должен добавить в него новый столбец: delete_flag типа данных: IntegerType. Этот столбец используется для обозначения первичного ключа независимо от того, удалена строка в исходной таблице или нет. Чтобы добавить новый столбец в существующий фрейм данных, я знаю, что есть опция: dataFrame.withColumn("del_flag",someoperation), но нет такой опции для указания типа данных нового столбца.

Я написал StructType для нового столбца как:

val delFlagColumn = StructType(List(StructField("delete_flag", IntegerType, true)))

Но я не понимаю, как добавить этот столбец к существующему фрейму данных: yearDF. Может кто-нибудь дать мне знать, как добавить новый столбец вместе с его типом данных в существующий фрейм данных?

1 Ответ

0 голосов
/ 30 августа 2018
import org.apache.spark.sql.types.IntegerType
df.withColumn("a", lit("1").cast(IntegerType)).show()

Хотя приведение не требуется, если вы проезжаете свет (1), поскольку искра выведет схему для вас. Но если вы проходите как горит («1»), это приведет к Int

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