我在SparkSQL上面临关于DateFrame的以下问题。 我基于avro文件加载到spark-shell中的DateFrame具有以下结构:
intel_idle.max_cstate=0 processor.max_cstate=0 idle=halt
我尝试添加一个新的列,将Zeitstempel( - > Timestamp,格式:1990-10-10 19:30:30)转换为毫秒:
[id: bigint, Nachrichtentyp: bigint, MelderID: bigint, Wartung: bigint, Ruestung: bigint, Fehler: bigint, Leerlauf: bigint, Zeitstempel: string]
val df = sqlContext.load("hdfs://quickstart/user/hive/warehouse/ma_transport2/077cf09f-b157-40a7-9d70-b5b9f70550d9.avro", "com.databricks.spark.avro").orderBy("Zeitstempel")
val d = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
vall dtFunc: (String => Long) = (arg1: String) => DateTime.parse(arg1, d).getMillis()
val dtFunc2 = udf(dtFunc)
val x = df.withColumn("dt", dtFunc2(col("Zeitstempel")))
错误-消息:
x.show()
安迪的帮助非常感谢!
谢谢! PL
答案 0 :(得分:0)
问题解决了:
而是拆分第2步和第3步:
def dtFunc: (String => Long) = (arg1: String) => DateTime.parse(arg1, DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")).getMillis()