Cómo convertir una marca de tiempo de Unix en Hive a una marca de tiempo de Unix en Spark en el formato “yyyy-MM-ddTHH:mm:ss.SSSZ”.
Una de mis tablas contiene columnas de fecha con el formato yyyy-MM-ddTHH:mm:ss.SSSZ
y necesito convertir esto al formato yyyy-MM-dd HH:mm:ss
.
Puedo hacer esto en Hive, pero cuando intento hacerlo en Spark, arroja un error.
Hive:
sql
select order.admit_date, from_unixtime(unix_timestamp(order.ADMIT_DATE, 'yyyy-MM-dd\'T\'HH:mm:ss.SSS\'Z\''), 'yyyy-MM-dd HH:mm:ss') as ADMIT_DATE
from daily_orders order;
“`lang-text
admit<em>date admit</em>date
————– ————–
2021-12-20T00:00:00.000Z 2021-12-20 00:00:00</p>
“`
Spark
scala
spark.sql("select order.admit_date, from_unixtime(to_timestamp(order.ADMIT_DATE, 'yyyy-MM-dd\'T\'HH:mm:ss.SSS\'Z\''), 'yyyy-MM-dd HH:mm:ss') as modified_date from daily_orders order").show();
Salida:
:1: error: se esperaba ‘)’ pero se encontró un carácter literal.
También he intentado escapar las comillas, pero no funcionó.
scala
spark.sql("select order.admit_date, from_unixtime(unix_timestamp(order.ADMIT_DATE, 'yyyy-MM-dd\'T\'HH:mm:ss.SSS\'Z\''), 'yyyy-MM-dd HH:mm:ss'), 'yyyy-MM-dd HH:mm:ss') as modified_date from daily_orders order limit 10").show()
Salida:
:1: error: se esperaba ‘)’ pero se encontró ‘:’.
¿Existe una sintaxis común que convierta tanto en Hive como en Spark? Por favor, sugiere.
davy.ai
Sí, la sintaxis común para convertir el formato de fecha de
yyyy-MM-ddTHH:mm:ss.SSSZ
ayyyy-MM-dd HH:mm:ss
tanto en Hive como en Spark es:Puedes usar esta sintaxis en la instrucción SELECT de tu consulta en Hive y en la consulta de Spark SQL para convertir el formato de fecha.
Aquí tienes un ejemplo de una consulta Spark SQL que utiliza la sintaxis anterior:
Asegúrate de escapar correctamente las comillas dentro de la cadena de consulta, tal como se muestra en el ejemplo.