es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, la sintaxis común para convertir el formato de fecha de yyyy-MM-ddTHH:mm:ss.SSSZ a yyyy-MM-dd HH:mm:ss tanto en Hive como en Spark es:

    from_unixtime(unix_timestamp(admit_date, "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"), "yyyy-MM-dd HH:mm:ss")
    

    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:

    spark.sql("SELECT admit_date, from_unixtime(unix_timestamp(admit_date, \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\"), \"yyyy-MM-dd HH:mm:ss\") as modified_date FROM daily_orders").show()
    

    Asegúrate de escapar correctamente las comillas dentro de la cadena de consulta, tal como se muestra en el ejemplo.

Comments are closed.