scala- все статьи тега ➜ страница 6


Функциональное программирование-много внимания на рекурсии, почему?

Я знакомлюсь с функциональным программированием [FP] (используя Scala). Одна вещь, которая выходит из моих первоначальных знаний, заключается в том, что FPs сильно зависит от рекурсии. А также кажется, что в чисто FPs единственный способ сделать итерационный материал-это написать рекурсивные функции. и из-за интенсивного использования рекурсии, похоже, следующее, о чем FPs пришлось беспокоиться, были StackoverflowExceptions обычно из-за длинных рекурсивных вызовов обмотки. Это было решаться вве ...

Что такое "ранний инициализатор" в Scala?

У Мартина Одерского недавний пост об уровнях способностей программиста в Scala, в экспертный конструктор библиотек, Он включает в себя термин "в начале инициализаторы". Они не упоминаются в программирование в Scala. Что это такое? ...

Spark-ошибка "основной URL должен быть установлен в вашей конфигурации" при отправке приложения

у меня есть приложение Spark,которое работает без проблем в локальном режиме, но есть некоторые проблемы при отправке в кластер Spark. ошибка msg выглядит следующим образом: 16/06/24 15:42:06 WARN scheduler.TaskSetManager: Lost task 2.0 in stage 0.0 (TID 2, cluster-node-02): java.lang.ExceptionInInitializerError at GroupEvolutionES$$anonfun.apply(GroupEvolutionES.scala:579) at GroupEvolutionES$$anonfun.apply(GroupEvolutionES.scala:579) at scala.collection.Iterator$$anon.hasNext(Ite ...

Структура приложения скала

Я изучаю Scala сейчас, и я хочу написать какое-то глупое маленькое приложение, такое как консольный клиент Twitter, или что-то еще. Вопрос в том, как структурировать приложение на диске и логически. Я знаю python, и там я бы просто создал некоторые файлы с классами, а затем импортировал их в основной модуль, например import util.ssh или from tweets import Retweet (сильно надеясь, что вы не возражаете, что имена, они просто для справки). Но как должны Я делаю это с помощью Scala? Кроме того, у ме ...

Scala-печатные массивы

похоже, что поддержка печатных массивов несколько отсутствует в Scala. Если вы напечатаете его, вы получите мусор по умолчанию, который вы получите в Java: scala> val array = Array.fill(2,2)(0) array: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0)) scala> println(array) [[I@d2f01d кроме того, вы не можете использовать методы Java toString/deepToString из java.утиль.Класс массивов: (или, по крайней мере, я не могу понять это) scala> println(java.util.Arrays.deepToS ...

При вычислении скользящего среднего списка

в эти выходные я решил попробовать свои силы в некоторых Scala и Clojure. Я хорошо разбираюсь в объектно-ориентированном программировании, и поэтому Scala было легко подобрать в качестве языка, но хотел попробовать функциональное программирование. Вот где это стало трудно. Я просто не могу заставить свою голову работать в режиме написания функций. Как опытный функциональный программист, как вы подходите к проблеме? учитывая список значений и определенный период суммирования, как бы вы соз ...

Как работает HashPartitioner?

Я прочитал в документации HashPartitioner. К сожалению, ничего особенного не было объяснено, кроме вызовов API. Я исхожу из предположения, что HashPartitioner разбивает распределенный набор на основе хэша ключей. Например, если мои данные как (1,1), (1,2), (1,3), (2,1), (2,2), (2,3) таким образом, разделитель поместил бы это в разные разделы с одинаковыми ключами, попадающими в один и тот же раздел. Однако я не понимаю значение аргумента конструктора new HashPartitoner(numPartitions) //Wh ...

Перехват нескольких исключений сразу в Scala

Как поймать несколько исключений сразу в Scala? Есть ли лучший способ, чем в C#: поймать несколько исключений сразу? ...

Запись на несколько выходов с помощью ключа Spark-одно задание Spark

как вы можете писать на несколько выходов, зависящих от ключа, используя Spark в одном задании. связанный: запись на несколько выходов с помощью ключа ошпаривания Hadoop, одно задание MapReduce например. sc.makeRDD(Seq((1, "a"), (1, "b"), (2, "c"))) .writeAsMultiple(prefix, compressionCodecOption) обеспечили бы cat prefix/1 - это a b и cat prefix/2 будет c ответ для точного ответа с полным импортом, pimp и кодеком сжатия см. https://stackoverflow.com/a/46118044/1586965 ...

Группа захвата Scala с использованием регулярного выражения

скажем, у меня есть этот код: val string = "one493two483three" val pattern = """two(d+)three""".r pattern.findAllIn(string).foreach(println) Я ожидал findAllIn возврат только 483, но вместо этого, он вернулся two483three. Я знаю, что мог бы использовать unapply чтобы извлечь только эту часть, но я должен был бы иметь шаблон для всей строки, что-то вроде: val pattern = """one.*two(d+)three""".r val pattern(aMatch) = string println(aMatch) // prints 483 есть ли другой способ достичь это ...

Множества, функторы и путаница эквалайзера

недавно на работе возникла дискуссия о наборах, которые в Scala поддерживают zip метод и как это может привести к ошибкам, например, scala> val words = Set("one", "two", "three") scala> words zip (words map (_.length)) res1: Set[(java.lang.String, Int)] = Set((one,3), (two,5)) я думаю, что это довольно ясно, что Sets не должен поддерживать a zip операция, так как элементы не упорядочены. Однако было высказано предположение, что проблема заключается в том, что Set на самом деле не функто ...

Как пропустить заголовок из CSV-файлов в Spark?

предположим, я даю три пути файлов к контексту Spark для чтения, и каждый файл имеет схему в первой строке. Как мы можем пропустить строки схемы из заголовков? val rdd=sc.textFile("file1,file2,file3") теперь, как мы можем пропустить строки заголовка из этого rdd? ...

Как я должен думать о классах продуктов Scala?

пакет "scala" имеет ряд классов с именами Product, Product1, Product2 и так далее, вплоть до Product22. описания этих классов, безусловно точные. Например: Product4 is a cartesian product of 4 components точное, да. Общительный? Не столько. Я ожидаю, что это идеальная формулировка для тех, кто уже понимает смысл "декартового продукта", используемого здесь. Для того, кто этого не делает, это звучит немного круговым. "О да, ну конечно Product4 это мычать продукт 4 мычать-мычит." пожалуйста, п ...

Недостатки системы типа Scala по сравнению с Haskell?

Я читал, что система типов Scala ослаблена взаимодействием Java и поэтому не может выполнять некоторые из тех же полномочий, что и система типов Haskell. Это правда? Это слабость из-за стирания типа, или я ошибаюсь?во всех смыслах? Является ли эта разница причиной того, что у Scala нет typeclasses? ...

Извлечение значений столбцов фрейма данных в виде списка в Apache Spark

Я хотел бы преобразовать строковый столбец фрейма данных в список. Что я могу найти от Dataframe API-это RDD, поэтому я попытался сначала преобразовать его обратно в RDD, а затем применить toArray функция для RDD. В этом случае длина и SQL работают просто отлично. Однако результат, который я получил от RDD, имеет квадратные скобки вокруг каждого элемента, подобного этому [A00001]. Мне было интересно, если есть способ преобразовать столбец в список или способ снять квадратные скобки. любой предл ...

Как сравнить два массива в scala?

val a: Array[Int] = Array(1,2,4,5) val b: Array[Int] = Array(1,2,4,5) a==b // false есть ли способ сопоставления шаблонов, чтобы увидеть, если два массива (или последовательности) эквивалентны? ...

Лучшее форматирование строк в Scala

со слишком большим количеством аргументов,String.format легко становится слишком запутанным. Есть ли более мощный способ форматирования строки. Вот так: "This is #{number} string".format("number" -> 1) или это невозможно из-за проблем с типом (format нужно было бы взять карту[String, Any], я предполагаю; не знаю, будет ли это хуже). или это лучший способ сделать это так: val number = 1 <plain>This is { number } string</plain> text даже если это загрязняет пространство имен? ...

Расширение класса Scala case без постоянного дублирования конструкторов vals?

есть ли способ расширить класс case без постоянного подбора новых vals по пути? Например, это не работает case class Edge(a:Strl, b:Strl) case class EdgeQA(a:Strl, b:Strl, right:Int, asked:Int ) extends Edge(a,b) " a " конфликтует с "a" , поэтому я вынужден переименовать в a1. Но я не хочу все виды дополнительных публичных копий "а", поэтому я сделал его частным. case class Edge(a:Strl, b:Strl) case class EdgeQA(private val a1:Strl, private val b1:Strl, right:Int, asked:Int ) extends Edge(a ...

Scala: почему mapValues создает представление и есть ли стабильные альтернативы?

только сейчас я с удивлением узнал, что mapValues производит вид. Следствие показано в следующем примере: case class thing(id: Int) val rand = new java.util.Random val distribution = Map(thing(0) -> 0.5, thing(1) -> 0.5) val perturbed = distribution mapValues { _ + 0.1 * rand.nextGaussian } val sumProbs = perturbed.map{_._2}.sum val newDistribution = perturbed mapValues { _ / sumProbs } идея заключается в том, что у меня есть дистрибутив, который возмущается с какой-то случайности, то я ...

Как отменить будущее в Scala?

Java Future и cancel метод, который может прервать поток, который запускает Future задач. Например, если я оберну прерываемый блокировка вызова в Java Future Я могу прервать его позже. Scala Future не дает cancel метод. Предположим, я оберну прерываемый блокировка вызова в Scala Future. Как я могу прервать его? ...