Предположим, вот как выглядят данные -
country|city|json_content
america|chicago|2019-06-28T00:00:00.000Z { "a": 123, "b": "456", "c": 789 }
india|mumbai|2019-06-28T00:00:00.000Z { "a": 123, "b": "456", "c": 789 }
Считать их в искровой фрейм данных -
val df = spark
.read
.option("header", "true") // Use first line of all files as header
.option("delimiter", "|")
.csv("csv_file_path")
Поскольку вы уже распаковали данные, сначала прочитайте их в СДРкак показано ниже, затем преобразуйте его в DF ( Дайте мне знать, если вам нужна моя помощь в преобразовании RDD в DF. ) -
val rdd = sc.textFile("myFile.gz")
Импортважные функции -
import org.apache.spark.sql.functions._
Напишите и зарегистрируйте UDF, который извлекает только содержимое json из вашей метки времени + столбец json
val getJsonContent = udf{input: String => input.substring(input.indexOf("{"))}
Примените этот UDF и создайте окончательный Dataframe-
val finalDf = df.withColumn("json_content",getJsonContent(col("json_content")))