Как использовать классификатор lightgbm в pyspark - PullRequest
0 голосов
/ 21 апреля 2020

Просто чтобы уточнить, я могу прочитать S3, если я не включаю два .config () в мою конструкцию sparksession

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('abc').getOrCreate()

Вышеописанное работает. Но я не могу использовать lightgbm, если я создаю подобную свечу. Эта ошибка будет возвращена, если я воспользуюсь приведенным выше кодом:

from mmlspark.lightgbm import LightGBMClassifier
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-6-df498625321c> in <module>
----> 1 from mmlspark.lightgbm import LightGBMClassifier

~/miniconda/lib/python3.7/site-packages/mmlspark/lightgbm/LightGBMClassifier.py in <module>
      9     basestring = str
     10 
---> 11 from mmlspark.lightgbm._LightGBMClassifier import _LightGBMClassifier
     12 from mmlspark.lightgbm._LightGBMClassifier import _LightGBMClassificationModel
     13 from pyspark import SparkContext

ModuleNotFoundError: No module named 'mmlspark.lightgbm._LightGBMClassifier'

Я использовал код в своей записной книжке Jupyter:

import pyspark
spark = pyspark.sql.SparkSession.builder.appName("MyApp") \
            .config("spark.jars.packages", "com.microsoft.ml.spark:mmlspark_2.11:1.0.0-rc1") \
            .config("spark.jars.repositories", "https://mmlspark.azureedge.net/maven") \
            .getOrCreate()
import mmlspark

, тогда я смогу успешно запустить следующие ячейки

import mmlspark
from mmlspark.lightgbm import LightGBMClassifier

но я не могу прочитать паркетный документ из моего хранилища s3

df = spark.read.parquet('s3://[my-s3-bucket]/data')

Py4JJavaError Traceback (последний вызов был последним) в ----> 1 df = spark.read.parquet ('s3 : // se c -finc / pivot_data_vpq / ')

~ / miniconda / lib / python3 .7 / site-packages / pyspark / sql / readwriter.py в паркете (self, * paths ) 314 [('name', 'string'), ('year', 'int'), ('month', 'int'), ('day', 'int')] 315 "" "-> 316 вернуть self._df (self._jreader.parquet (_to_seq (self._spark._s c, пути))) 317 318 @ ignore_unicode_prefix

~ / miniconda / lib / python3 .7 / site -packages / py4j / java_gateway.py в call (self, * args) 1255 answer = self.gateway_client.send_command (команда) 1256 return_value = get_return_value (-> ответ 1257, self.gateway_client, self.target_id , self.name) 1258 1259 для temp_arg в temp_args:

~ / miniconda / lib / python3 .7 / site-packages / pyspark / sql / utils.py in deco (* a, ** kw) 61 def deco (* a, ** kw): 62 try: ---> 63 возвращает f (* a, ** kw) 64 за исключением py4j.protocol.Py4JJavaError как e: 65 s = e.java_exception.toString ()

~ / miniconda / lib / python3 .7 / site -packages / py4j / protocol.py в get_return_value (ответ, gateway_client, target_id, name) 326 повысить Py4JJavaError (327 «Произошла ошибка при вызове {0} {1} {2}. \ n». -> 328 формат (target_id, ".", Name), значение) 329 else: 330 повысить Py4JError (

Py4JJavaError: Произошла ошибка при вызове o742.parquet.: java .io.IOException: Нет файловой системы для схемы: s3 в org. apache .had oop .fs.FileSystem.getFileSystemClass (FileSystem. java: 2660) в org. apache .had oop .fs.FileSystem.createFileSystem ( FileSystem. java: 2667) в org. apache .had oop .fs.FileSystem.access $ 200 (FileSystem. java: 94) в org. apache .had oop .fs.FileSystem $ Cache.getInternal (FileSystem. java: 2703) в орг. apache .had oop .fs.FileSystem $ Cache.get (FileSystem. java: 2685) в орг. apache .had oop .fs.FileSystem.get (FileSystem. java: 373) в org. apache .had oop .fs.Path.getFileSystem (Path. java: 295) в org. apache. spark. sql .execution.datasources.DataSource $$ anonfun $ org $ apache $ spark $ sql $ исполнительный $ источники данных $ DataSource $$ checkAndGlobPathIfNeeded $ 1.apply (DataSource. scala: 547) в организации. apache. искра. sql .execution.datasources.DataSource $$ anonfun $ орг $ апач $ искры $ SQL $ исполнения $ Даты источники $ DataSource $$ checkAndGlobPathIfNeeded $ 1.apply (DataSource. scala: 545) в scala .collection.TraversableLike $$ anonfun $ flatMap $ 1.apply (TraversableLike. scala: 241) в scala .collection. TraversableLike $$ anonfun $ flatMap $ 1.apply (TraversableLike. scala: 241) в scala .collection.immutable.List.foreach (List. scala: 392) в scala .collection.TraversableLike $ класс. flatMap (TraversableLike. scala: 241) в scala .collection.immutable.List.flatMap (List. scala: 355) в org. apache .spark. sql .execution.datasources.DataSource. org $ apache $ spark $ sql $ выполнение $ источники данных $ DataSource $$ checkAndGlobPathIfNeeded (DataSource. scala: 545) at or. *: 359) в орг. apache .spark. sql .DataFrameReader.loadV1Source (DataFrameReader. scala: 223) в орг. apache .spark. sql .DataFrameReader.load (DataFrameReader. scala: 211) в орг. apache. spark. sql .DataFrameReader.parquet (DataFrameReader. scala: 645) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke * NativeMethodAccessor refle.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .lang.reflect.Method.invoke (Метод. java: 498) в py4j.reflection.MethodInvoker.invoke 10 Method. 244) в py4j.reflection.ReflectionEngine.invoke (ReflectionEngine. java: 357) в py4j.Gateway.invoke (Gateway. java: 282) в py4j.commands.AbstractCommand.invokeMethod (AbstractCommand. java: 132 ) на py4j.commands.CallCommand.execute (CallCommand. java: 79) на py4j.GatewayConnection.run (GatewayConnection. java: 238) на java .lang.Thread.run (поток. java: 748)

Интересно, как изменить конфигурацию моей свечи, чтобы можно было читать паркет с моего s3

...