apache-spark apache-spark-sql orc

apache spark - Convirtiendo CSV a ORC con Spark



apache-spark apache-spark-sql (1)

He visto esta publicación de blog de Hortonworks para obtener soporte para ORC en Spark 1.2 a través de fuentes de datos.

Cubre la versión 1.2 y aborda el problema o la creación del archivo ORC a partir de los objetos, no la conversión de csv a ORC. También he visto formas , como estaba previsto, de hacer estas conversiones en Hive.

¿Podría alguien proporcionar un ejemplo simple de cómo cargar un archivo csv simple desde Spark 1.6+, guardarlo como ORC y luego cargarlo como un marco de datos en Spark.


Voy a omitir la parte de lectura de CSV porque esa pregunta ha sido respondida bastante tiempo antes y además hay muchos tutoriales disponibles en la web para tal fin, será excesivo volver a escribirlos. ¡Marque aquí si lo desea !

Soporte de ORC:

Con respecto a los ORC, son compatibles con HiveContext.

HiveContext es una instancia del motor de ejecución Spark SQL que se integra con los datos almacenados en Hive. SQLContext proporciona un subconjunto del soporte de Spark SQL que no depende de Hive, pero ORC, la función de ventana y otras características dependen de HiveContext, que lee la configuración de hive-site.xml en classpath.

Puede definir un HiveContext de la siguiente manera:

import org.apache.spark.sql.hive.orc._ import org.apache.spark.sql._ val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)

Si está trabajando con el spark-shell, puede usar sqlContext directamente para tal fin sin crear un hiveContext ya que de forma predeterminada, sqlContext se crea como un HiveContext.

Al especificar as orc al final de la declaración SQL a continuación, se garantiza que la tabla Hive se almacena en el formato ORC. p.ej :

val df : DataFrame = ??? df.registerTempTable("orc_table") val results = hiveContext.sql("create table orc_table (date STRING, price FLOAT, user INT) stored as orc")

Guardar como un archivo ORC

Perseveremos el DataFrame en la tabla ORC de Hive que creamos antes.

results.write.format("orc").save("data_orc")

Para almacenar los resultados en un directorio de colmenas en lugar de un directorio de usuarios, use esta ruta en su lugar /apps/hive/warehouse/data_orc (ruta de acceso de almacén de hive-default.xml)