Spark Структурированная потоковая замена значений столбца - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть следующий фрейм данных

val tDataJsonDF = kafkaStreamingDFParquet
   .filter($"value".contains("tUse"))
   .filter($"value".isNotNull)
   .selectExpr("cast (value as string) as tdatajson", "cast (topic as string) as env")
   .select(from_json($"tdatajson", schema = ParquetSchema.tSchema).as("data"), $"env".as("env"))
   .select("data.*", "env")
   .select($"date", <--YYYY/MM/dd
           $"time",
           $"event",
           $"serviceGroupId",
           $"userId",
           $"env")

Этот потоковый фрейм данных имеет дату столбца в формате - YYYY/MM/dd.

Из-за этого, когда я использую этот столбец в качестве столбца разбиения в моей паркетной записи, Spark создает раздел как date=2018%04%12.

Есть ли способ изменить значение столбца на лету в приведенном выше коде так, чтобы значение даты было YYYY-MM-dd или YYYYMMd.

Запрос записи паркета:

val tunerQuery = tunerDataJsonDF
  .writeStream
  .format("parquet")
  .option("path",pathtodata )
  .option("checkpointLocation", pathtochkpt)
  .partitionBy("date","env","serviceGroupId")
  .start()

1 Ответ

0 голосов
/ 26 апреля 2018

Я полагаю, вы используете Spark 2.2 +

tDataJsonDF.withColumn("formatted_date",date_format(to_date(col("date"), "YYYY/MM/dd"), "yyyy-MM-dd"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...