PySpark - подключение к HBASE с использованием PySpark - сбой импорта пакета - PullRequest
0 голосов
/ 07 апреля 2019

Я сталкиваюсь с проблемой при подключении к HBASE с использованием PySpark, поскольку происходит сбой с ошибкой:

py4j.protocol.Py4JJavaError: Произошла ошибка при вызове o42.load.: java.lang.ClassNotFoundException: не удалось найти источник данных: org.apache.spark.sql.execution.datasources.hbase.Пожалуйста, найдите пакеты на http://spark.apache.org/third-party-projects.html

  • HDP Версия: 2.6.4.0-91
  • Spark Ver: 2.2.0.2.6.4.0-91
  • Python: 2.7.5
  • Используется Jar: /usr/hdp/2.6.4.0-91/shc/shc-core-1.1.0.2.6.4.0-91.jar

Я попытался импортировать jar с помощью pyspark --jars /usr/hdp/2.6.4.0-91/shc/shc-core-1.1.0.2.6.4.0-91.jar

Требуется оболочка PySpark с приглашением, но когда я пытаюсь подключиться к HBASE, происходит сбой с упомянутой выше ошибкой.

Пример кодаВыполнено:

Using Python version 2.7.5 (default, May 31 2018 09:41:32)

SparkSession available as 'spark'.

>>> catalog = ''.join("""{'table': {'namespace': 'default','name': 'books'},'rowkey': 'key','columns': {'title': {'cf': 'rowkey', 'col': 'key', 'type': 'string'},'author': {'cf': 'info', 'col': 'author', 'type': 'string'}}}""".split())
>>> 
>>> df = sqlContext.read.options(catalog=catalog).format('org.apache.spark.sql.execution.datasources.hbase').load()

Сбой с ошибкой, указанной ниже: Traceback (последний вызов был последним): файл "", строка 1, в ImportError: Нет модуля с именем org.apache.spark.sql.execution.datasources.hbase

1 Ответ

0 голосов
/ 07 апреля 2019

Попробуйте использовать --packages и --repositories аргументы, как указано здесь .

bash$ export SPARK_MAJOR_VERSION=2

bash$ pyspark --packages com.hortonworks:shc-core:1.1.1-2.1-s_2.11 --repositories http://repo.hortonworks.com/content/groups/public/

>>> from pyspark.sql.functions import *
>>> from pyspark.sql.types import *

>>> spark = SparkSession \
    .builder \
    .enableHiveSupport() \
    .getOrCreate() 

>>> catalog = ''.join("""{'table': {'namespace': 'default','name': 'books'},'rowkey': 'key','columns': {'title': {'cf': 'rowkey', 'col': 'key', 'type': 'string'},'author': {'cf': 'info', 'col': 'author', 'type': 'string'}}}""".split())

>>> df=spark.read.options(catalog=catalog,newtable=5).format("org.apache.spark.sql.execution.datasources.hbase").load()
...