Поскольку я новичок в Apache-методах Spark и Scala, я хочу выполнить следующие задачи.
-Читать определенный столбец из файла паркета (13-значная временная метка).
-Преобразовать метку времени в обычный формат даты (гггг-ММ-дд ЧЧ: мм: сс).
- Сохранить результат как другой столбец в наборе данных.
Я могу прочитать отметку времени, используя следующий код
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.SQLContext
object Test {
def main(args: Array[String]){
val conf=new SparkConf().setAppName("TEST_APP").setMaster("local")
val sc=new SparkContext(conf)
val sqlcon=new SQLContext(sc)
val Testdata = sqlcon.read.parquet("D:\\TestData.parquet")
val data_eve_type_end=Testdata.select(Testdata.col("heading.timestamp")).where(Testdata.col("status").equalTo("Success")).toDF("13digitTime")
}
}
, и я попытался преобразовать отметку времени, используя ссылку ниже
[https://stackoverflow.com/a/54354790/9493078]
Но это не работает для меня. На самом деле я не знаю, правильно ли я извлек данные в кадр данных или нет. В любом случае это выводится в виде таблицы с именем столбца 13digitTime изначения в виде некоторых чисел с размером 13 цифр.
Когда я пытаюсь сделать код по ссылке, указанной выше, он отображает ошибку как
WARN Utils: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.debug.maxToStringFields' in SparkEnv.conf.
Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve '(`13digitTime` / 1000000)' due to data type mismatch:
Я ожидаю для фрейма данных с 2 столбцами вкакая из них должна содержать метку времени из 13 цифр, а другая должна содержать cперевернутое время из 13 цифр в общий формат даты (гггг-мм-дд чч: мм: сс).
Я хотел бы получить решение, спасибо заранее.