¿Cómo conectar HBase y Spark usando Python?

Tengo una tarea vergonzosamente paralela para la cual uso Spark para distribuir los cálculos. Estos cálculos están en Python, y uso PySpark para leer y preprocesar los datos. Los datos de entrada a mi tarea se almacenan en HBase. Desafortunadamente, todavía no he encontrado una manera satisfactoria (es decir, fácil de usar y escalable) para leer / escribir datos de HBase desde / hacia Spark usando Python.

Lo que he explorado anteriormente:

Conectando desde mis procesos Python usandohappybase. Este paquete permite conectarse a HBase desde Python utilizando la API Thrift de HBase. De esta manera, básicamente omito Spark para la lectura / escritura de datos y me estoy perdiendo posibles optimizaciones de HBase-Spark. Las velocidades de lectura parecen razonablemente rápidas, pero las velocidades de escritura son lentas. Esta es actualmente mi mejor solución.

Usando SparkContext'snewAPIHadoopRDD ysaveAsNewAPIHadoopDataset que hacen uso de la interfaz MapReduce de HBase. Ejemplos de esto se incluyeron una vez en la base del código Spark (mira aquí) Sin embargo, ahora se consideran obsoletos a favor de los enlaces Spark de HBase (mira aquí) También he encontrado que este método es lento y engorroso (para leer, escribir funcionó bien), por ejemplo, ya que las cadenas regresaron denewAPIHadoopRDD tuve que analizarlo y transformarlo de varias maneras para terminar con los objetos de Python que quería. También solo admite una sola columna a la vez.

Alternativas que conozco:

Actualmente estoy usando el CDH de Cloudera y la versión 5.7.0 ofrecehbase-spark (Notas de la versión de CDHyuna publicación de blog detallada) Este módulo (anteriormente conocido comoSparkOnHBase) será oficialmente parte de HBase 2.0. Desafortunadamente, esta maravillosa solución parece funcionar solo con Scala / Java.

HuaweiSpark-SQL-on-HBase / Astro (No veo una diferencia entre los dos ...). No parece tan robusto y bien soportado como me gustaría que fuera mi solución.

Respuestas a la pregunta(1)

Su respuesta a la pregunta