Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Spark :: ворчалка / 20 сообщений из 20, страница 1 из 1
27.12.2021, 21:38
    #40123462
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
Библиотека MLib расколота на 2 направления. Первое - на суппорте mlib, И второе в активной разработке - ml.

https://spark.apache.org/docs/latest/ml-guide.html org.apache.spark.mlib (obsolete)

RDD-based machine learning APIs (in maintenance mode).

The spark.mllib package is in maintenance mode as of the
Spark 2.0.0 release to encourage migration to the
DataFrame-based APIs under the org.apache.spark.ml
package. While in maintenance mode,

* no new features in the RDD-based spark.mllib package will be accepted, unless they block implementing new features in the DataFrame-based spark.ml package

* bug fixes in the RDD-based APIs will still be accepted

The developers will continue adding more features to
the DataFrame-based APIs in the 2.x series to reach
feature parity with the RDD-based APIs. And once we
reach feature parity, this package will be
deprecated.

автор org.apache.spark.ml

DataFrame-based machine learning APIs to let users
quickly assemble and configure practical machine
learning pipelines.

Проблема в том что большинство учебных примеров адресованы именно к старому варианту.
В старом варианте работа идет с RDD-шками. Это такой себе "нетипизированный" вариант выборки
больших данных. Как аналог - строчка JSON.

В новом варианте (более вкусном) DataFrame/DataSet (оба похожи )мы имеем хотя-бы декларацию
колоночек и типов (DataSet)
...
Рейтинг: 0 / 0
28.12.2021, 14:46
    #40123630
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
mayton,
Я давно читал, что вроде бы RDD Depricated И нужно переходить на DataFrame/DataSet...
...
Рейтинг: 0 / 0
28.12.2021, 14:52
    #40123633
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
Я нарисовал такую табличку для себя. Я не автор. Стащил с чьей-то презентации. Просто без этого
обзора иногда трудно понять какой API вообще надо использовать.

RDDDataFrameDatasetCommentsWhatCollectionNamed columnsExtension of DataFrameWhen1.01.31.6Compiletime type safetyNoNoYesAPINoYesYesMeans: agg,select,sumSparkSQLNoYesYesCatalyst optimizerNoYesYesTungsten componentNoYesYesAdvanced encodersNoNoYes
...
Рейтинг: 0 / 0
28.12.2021, 22:02
    #40123731
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
Интересно определен DataFrame. Это просто генерик датасета шаблонизированный строкой Row.

Код: java
1.
type DataFrame = Dataset[Row]



Интересно в старых версиях (до ДатаСета) датафрейм наверное как-то определялся по другому.
Но этот алиас в целях совметсимости должен был обеспечивать безшовный переход от одного определения
типа к другому на базе алиаса.
...
Рейтинг: 0 / 0
29.12.2021, 23:25
    #40124080
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
С библиотекой ML - непонятно. Она не работает с датафреймами. Ей нужен некий ассемблер.
Это трансформер который преобразует исходный датафрейм в другой где интересующие
факторы и отклики или input/output cols сгруппированы в мини-векторы в каждой ячейке.
Зачем - непонятно. Как по мне - лишнее телодвижение в памяти. Возможно имеет место экономия
для сериализации.

Вообще многие алгоритмы типа DecisionTree, Random Forest не умеют работать строковым перечислением
(enum). Вы должны вручную его отобразить на набор вещественных величин { 1.0, 2.0 ...}.

И самое забавное что отчот о decision-tree выдается в таком-же уродском формате где факторы
перечислены в виде алиасов типа col1, col2 и резолюция в виде числа. Дальше - рутина по переводу
обратно. Впрочем она частично автоматизирована через такие-же stages ML но они есть.

Эксперименты я гонял на Ирисах Фишера. Это самый неподходящий сет для Tree но мне было пофиг.
Главное - попробовать.
...
Рейтинг: 0 / 0
24.02.2022, 22:19
    #40136313
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
Словил такой баг.

Вот так работает.

Код: java
1.
2.
3.
4.
5.
6.
    val weatDs : Dataset[Weat] = weather
      .map(row => enrichWeatWithGeoHashCode(row)) // Option[Weather]
      .filter(_.isDefined)
      .map(_.get)
      //.repartition(24, col("geo_hash"))
      .cache()



Если сделать repartition то получаю в логах

Код: java
1.
Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.wrapRefArray([Ljava/lang/Object;)Lscala/collection/mutable/WrappedArray;
...
Рейтинг: 0 / 0
24.02.2022, 23:33
    #40136314
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
mayton, такое обычно падает, когда спарк хочет одну версию скалы, а ему подсовывают другую - надо смотреть, какие версии зависмостей используются
...
Рейтинг: 0 / 0
25.02.2022, 00:04
    #40136317
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
build.sbt
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
name := "maytonsparkbasics"

version := "0.1"

scalaVersion := "2.12.15"

retrieveManaged := true

libraryDependencies ++= Seq(
  "ch.hsr" % "geohash" % "1.4.0",
  "org.apache.spark" %% "spark-sql" % "3.2.1" % "provided",
  "org.apache.spark" %% "spark-core" % "3.2.1" % "provided",
  // Unit testing
  "org.scalatest" %% "scalatest" % "3.2.6" % Test,
  "org.scalatest" %% "scalatest-funsuite" % "3.2.11" % Test,
  "org.scalacheck" %% "scalacheck" % "1.15.4" % Test,
  "com.holdenkarau" %% "spark-testing-base" % "3.2.0_1.1.1" % Test
)



и отдельный шелл скриптик которым я запускаю локально

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#!/usr/bin/env bash

set -e

mkdir -p target/scala-2.12/

cp -f "$M2_HOME/ch/hsr/geohash/1.4.0/geohash-1.4.0.jar" target/scala-2.12/

sbt package

spark-submit \
 --master local[1] \
 --deploy-mode client \
 --class mayton.Sparkbasics \
 --jars target/scala-2.12/geohash-1.4.0.jar,$SCALA_HOME/lib/scala-library.jar \
 --conf "apiKey=$GEO_API_KEY" \
 target/scala-2.12/maytonsparkbasics_2.12-0.1.jar 



Запускается под Windows11 в окружении WSL/Ubuntu. Версию Scala ставил одну без вариантов.
Код: java
1.
2.
$ scala -version
Scala code runner version 2.12.15 -- Copyright 2002-2021, LAMP/EPFL and Lightbend, Inc.



Spark - 3.2.1. со встроенным Hadoop-ом.
...
Рейтинг: 0 / 0
25.02.2022, 00:43
    #40136319
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
mayton
Spark - 3.2.1. со встроенным Hadoop-ом.

В самом дистрибутиве спарка лежит версия для 2.12 или 2.13? В клаудеровских дистрибутивах могут быть установлены несколько версий спарка одновременно - для уверенности в web-ui можно глянуть, какая версия используется. Да и 3.2.1 новая версия - может и вправду что-то не так сделали
...
Рейтинг: 0 / 0
25.02.2022, 00:53
    #40136320
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
Вопрос - что не так?
...
Рейтинг: 0 / 0
25.02.2022, 01:21
    #40136322
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
spark-submit подтягивает свои джарки скалы и спарка, а не только те, которые указаны в --jars. Вот версии в этих джарках и надо сравнить с версиями при компиляции. Это первый кандитат на причину для NoSuchMethodError
...
Рейтинг: 0 / 0
25.02.2022, 01:21
    #40136323
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
del
...
Рейтинг: 0 / 0
25.02.2022, 10:42
    #40136351
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
Если убрать scala-library.jar то другая ошибка сразу на старте.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
2022-02-25 09:39:56,861 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Serializable
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
        at java.lang.Class.getMethod0(Class.java:3018)
        at java.lang.Class.getMethod(Class.java:1784)
        at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:42)
        at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:955)
        at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
        at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
        at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
        at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1043)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1052)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: scala.Serializable
        at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 24 more
...
Рейтинг: 0 / 0
25.02.2022, 11:03
    #40136355
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
Ключевой вопрос: какие джарки лежат в $SPARK_HOME/jars? И какая версия scala отбражается в WEB-UI?
...
Рейтинг: 0 / 0
25.02.2022, 11:40
    #40136372
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
Мда. Действительно я пытался собирать в одном компилляторе а Spark подсовывал другой runtime.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
C:/mnt/c/spark/3.2.1-hadoop/jars$ ls -1 scala*
scala-collection-compat_2.13-2.1.1.jar
scala-compiler-2.13.5.jar
scala-library-2.13.5.jar
scala-parallel-collections_2.13-1.0.3.jar
scala-parser-combinators_2.13-1.1.2.jar
scala-reflect-2.13.5.jar
scala-xml_2.13-1.2.0.jar



Вобщем пока fixed. Спасибо.
...
Рейтинг: 0 / 0
27.02.2022, 20:01
    #40136623
adminDontSleep
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
mayton,переходи на джаву) спарк мертв
...
Рейтинг: 0 / 0
27.02.2022, 20:15
    #40136625
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
Спарк разрабатывается на Scala. Какой смысл мне переходить в разработке на Java/Python?
Я хочу читать стектрейсы ошибок и понимать суть того что происходит. Как ты планируешь
понимать суть ошибки языка который ты не знаешь?
...
Рейтинг: 0 / 0
27.02.2022, 21:39
    #40136638
adminDontSleep
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
mayton
Спарк разрабатывается на Scala. Какой смысл мне переходить в разработке на Java/Python?
Я хочу читать стектрейсы ошибок и понимать суть того что происходит. Как ты планируешь
понимать суть ошибки языка который ты не знаешь?

а логи в отменили разве?
...
Рейтинг: 0 / 0
27.02.2022, 22:08
    #40136639
H5N1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
mayton
Спарк разрабатывается на Scala.

не факт. скорее на c++ databricks разрабатывает, а потом уже портирует какую-то часть в опенсорс. в их облаке енжин и оптимизатор catalyst на c++ как я слышал.
...
Рейтинг: 0 / 0
27.02.2022, 23:21
    #40136642
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spark :: ворчалка
adminDontSleep
mayton
Спарк разрабатывается на Scala. Какой смысл мне переходить в разработке на Java/Python?
Я хочу читать стектрейсы ошибок и понимать суть того что происходит. Как ты планируешь
понимать суть ошибки языка который ты не знаешь?

а логи в отменили разве?

Твой вопрос - как из Кащенко.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spark :: ворчалка / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]