Mam żenująco równoległe zadanie, za pomocą którego używam Sparka do dystrybucji obliczeń. Te obliczenia są w Pythonie i używam PySpark do odczytu i wstępnego przetwarzania danych. Dane wejściowe do mojego zadania są przechowywane w HBase. Niestety, muszę jeszcze znaleźć zadowalający (tj. Łatwy w użyciu i skalowalny) sposób na odczyt/zapis danych HBase z/do Sparka przy użyciu Pythona.Jak podłączyć HBase i Spark za pomocą Pythona?
Co mam zbadane poprzednio:
Podłączenie od wewnątrz moich procesach wykorzystujących
happybase
Pythona. Ten pakiet umożliwia połączenie z HBase w Pythonie za pomocą funkcji Thrift API HBase. W ten sposób, w zasadzie pomijam Spark do odczytu/zapisu danych i brakuje mi optymalizacji potencjalnych HBase-Spark. Szybkości odczytu wydają się rozsądnie szybkie, ale szybkość zapisu jest wolna. To jest obecnie moje najlepsze rozwiązanie.Użycie SparkContext's
newAPIHadoopRDD
isaveAsNewAPIHadoopDataset
, które wykorzystują interfejs MapReduce HBase. Przykłady tego były kiedyś zawarte w bazie kodów Spark (see here). Jednak są one obecnie uważane za przestarzałe na korzyść wiązań Spark HBase (see here). Odkryłem również, że ta metoda jest powolna i kłopotliwa (do czytania, pisanie działało dobrze), na przykład, ponieważ ciągi znaków zwrócone odnewAPIHadoopRDD
musiały być analizowane i przekształcane na różne sposoby w celu znalezienia żądanych obiektów Pythona.
Alternatywy, że jestem świadomy:
obecnie używam Cloudera za CDH i wersja 5.7.0 oferuje
hbase-spark
(CDH release notes i a detailed blog post). Ten moduł (wcześniej znany jakoSparkOnHBase
) będzie oficjalnie częścią HBase 2.0. Niestety, to wspaniałe rozwiązanie wydaje się działać tylko w Scala/Java.Huawei's Spark-SQL-on-HBase/Astro (Nie widzę różnicy między tymi dwoma ...). Nie wygląda na tak solidny i dobrze obsługiwany, jak chciałbym, aby moje rozwiązanie było.
Nie wiem, w jaki sposób CDH rozprowadził złącze świecy hbase. Śledzenie ścieżki zapisu wygląda na to, że używa starej bazy kodu, która nie obsługuje ścieżki zapisu. –
Czy kiedykolwiek znalazłeś rozwiązanie? Ktokolwiek połączył ten PR, który usunął wszystkie istniejące przykłady robocze z folderu iskry/przykładów, zrobił wielką krzywdę dla użytkowników pyspark. –