Como conectar o HBase e o Spark usando Python?

Eu tenho uma tarefa paralela embaraçosamente para a qual eu uso o Spark para distribuir os cálculos. Esses cálculos estão em Python, e eu uso o PySpark para ler e pré-processar os dados. Os dados de entrada para minha tarefa são armazenados no HBase. Infelizmente, ainda não encontrei uma maneira satisfatória (ou seja, fácil de usar e escalável) de ler / gravar dados do HBase de / para o Spark usando Python.

O que eu explorei anteriormente:

Conectando de dentro dos meus processos Python usandohappybase. Este pacote permite conectar-se ao HBase a partir do Python usando a API Thrift do HBase. Dessa forma, basicamente pulo o Spark para leitura / gravação de dados e estou perdendo possíveis otimizações do HBase-Spark. As velocidades de leitura parecem razoavelmente rápidas, mas as velocidades de gravação são lentas. Atualmente, esta é minha melhor solução.

Usando o SparkContextnewAPIHadoopRDD esaveAsNewAPIHadoopDataset que fazem uso da interface MapReduce do HBase. Exemplos para isso foram incluídos na base de código Spark (Veja aqui) No entanto, agora eles são considerados desatualizados em favor das ligações Spark do HBase (Veja aqui) Também achei esse método lento e complicado (para ler, escrever funcionou bem), por exemplo, como as seqüências retornadasnewAPIHadoopRDD teve que ser analisado e transformado de várias maneiras para acabar com os objetos Python que eu queria. Ele também suportava apenas uma coluna por vez.

Alternativas que eu conheço:

Atualmente, estou usando o CDH da Cloudera e a versão 5.7.0 oferecehbase-spark (Notas de versão do CDHeuma postagem de blog detalhada) Este módulo (anteriormente conhecido comoSparkOnHBase) fará oficialmente parte do HBase 2.0. Infelizmente, esta solução maravilhosa parece funcionar apenas com Scala / Java.

Huawei'sSpark-SQL-on-HBase / astro (Não vejo diferença entre os dois ...). Não parece tão robusto e bem suportado quanto eu gostaria que minha solução fosse.

questionAnswers(1)

yourAnswerToTheQuestion