pyspark: пространство имен в jar-файле не найдено - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь импортировать классы во внешний jar с PySpark, я запускаю spark-shell с --jars и путь к jar, который содержит классы, которые я хочу использовать.

Однако, когда я импортирую класс внутри моего кода, пространство имен не найдено:

from io.warp10.spark import WarpScriptFilterFunction

Ошибка:

 SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
 Traceback (most recent call last):
   File "warp10-test.py", line 1, in <module>
     from io.warp10.spark import WarpScriptFilterFunction
 ImportError: No module named warp10.spark

1 Ответ

2 голосов
/ 12 июня 2019

Вам нужно использовать UDF WarpScript ™, если вы хотите запустить на Spark.

Вот пример:

from pyspark.sql import SparkSession
from pyspark.sql import SQLContext
from pyspark.sql.types import StringType
from pyspark.sql.types import ArrayType

spark = SparkSession.builder.appName("WarpScript Spark Test").getOrCreate()
sc = spark.sparkContext

sqlContext = SQLContext(sc)

sqlContext.registerJavaFunction("foo", "io.warp10.spark.WarpScriptUDF3", ArrayType(StringType()))

print sqlContext.sql("SELECT foo('SNAPSHOT \"Easy!\"', 3.14, 'pi')").collect()

Для получения дополнительной информации см .: https://www.warp10.io/content/05_Ecosystem/04_Data_Science/06_Spark/02_WarpScript_PySpark

...