Что действительно ‘оценивает семантику’ и ‘семантику указателя’, среднюю?

Действительно, VectorAssembler Transformer не принимает строки. Поэтому вам нужно убедиться, что ваши столбцы соответствуют числовым, логическим, векторным типам. Убедитесь, что ваш udf работает правильно и убедитесь, что ни один из столбцов не имеет StringType.

Чтобы преобразовать столбец в Spark DataFrame в другой тип, сделайте его простым и используйте функцию DSL () DSL так:

val analysisData  = dataframe_mysql.withColumn("Event", dataframe_mysql("Event").cast(DoubleType))

Он должен работать!

17
задан 7 revs, 3 users 75% 2 November 2017 в 07:24
поделиться

4 ответа

Java использует неявную семантику указателя для Типов объектов и семантику значения для примитивов.

семантика Значения означает, что Вы имеете дело непосредственно со значениями и что Вы раздаете копии. Точка здесь - то, что, когда у Вас есть значение, можно положить, что оно не изменится за спиной.

С семантикой указателя, у Вас нет значения, у Вас есть 'адрес'. Кто-то еще мог изменить то, что там, Вы не можете знать.

Семантика Указателя в C++:

void foo(Bar * b) ...
... b->bar() ...

Вам нужно *, чтобы попросить семантику указателя и-> называть методы на пуанте.

Неявная Семантика Указателя в Java:

void foo(Bar b) ...
... b.bar() ...

, Так как у Вас нет выбора использования семантики значения, *, не необходим, ни различие между-> и., следовательно неявное.

14
ответ дан 30 November 2019 в 12:37
поделиться

В основном семантика значения означает, что присвоение одного значения другому создает копию:

int x = 1;
int y = x;
x = 2; // y remains the same!

особый случай А является вызовом функции, который передается аргумент:

void f(int x) {
    x = 5;
}

int a = 1;
f(a);
// a is still 1

Это - на самом деле то же для Java и C++. Однако Java знает только несколько типов примитивов, среди них int, double, boolean и char, наряду с перечислениями, которые ведут себя этим способом. Все другие типы используют ссылочную семантику, что означает, что присвоение одного значения другому на самом деле перенаправляет указатель вместо того, чтобы копировать базовое значение:

class Foo {
    int x;

    public Foo(int x) { this.x = x; }
}

Foo a = new Foo(42);
Foo b = a; // b and a share the same instance!
a.x = 32;
//b.x is now also changed.

существует несколько протестов как бы то ни было. Например, много ссылочных типов (String, Integer †¦) на самом деле immutables. Их значение не может быть изменено, и любое присвоение на них переопределяет старое значение.

кроме того, аргументы все еще передаются значением. Это означает, что значение объекта, переданного функции, может быть изменено, но ее ссылка не может:

void f(Foo foo) {
    foo.x = 42;
}

void g(Foo foo) {
    foo = new Foo(42);
}

Foo a = new Foo(23);
f(a);
// a.x is now 42!

Foo b = new Foo(1);
g(b);
// b remains unchanged!
14
ответ дан 30 November 2019 в 12:37
поделиться

Java является передачей значением. C++ может использовать обоих, значение и ссылочную семантику.

http://javadude.com/articles/passbyvalue.htm

1
ответ дан 30 November 2019 в 12:37
поделиться

Использование Java implicit pointer semantics на переменный доступ (Вы не можете непосредственно отредактировать ссылку, это autmatically (неявный), разрешен к Объекту на доступе), и также использует Pass-by-Value semantics на параметры метода, передающие .

семантика Read Передачи значением в JAVA-приложениях :

В JAVA-приложениях, когда ссылка на объект является параметром к методу, Вы передаете копию ссылки (передача значением), не самой ссылки. Обратите внимание, что ссылка на объект вызывающего метода и копия указывают на тот же объект. Это - важное различие. JAVA-приложение ничего не делает по-другому, когда передающие параметры переменных типов как C++ делают. JAVA-приложения передают все параметры значением, таким образом делая копии всех параметров независимо от типа.

Короткий: Все параметры в Java передаются значением. Но это не означает, что Объект копируется (как значение по умолчанию в PHP4), но ссылка на тот объект копируется.

Вы будете видеть все объяснения и всесторонние примеры на семантика Передачи значением в JAVA-приложениях

1
ответ дан 30 November 2019 в 12:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: