Искра изменяет значение столбца столбца после объединения [duplicate]

Нет родительского селектора; так же, как нет предыдущего селектора. Одна из веских причин не иметь этих селекторов заключается в том, что браузер должен пройти через всех дочерних элементов элемента, чтобы определить, следует ли применять класс. Например, если вы написали:

body:contains-selector(a.active) { background: red; }

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

Эта статья Почему у нас нет родительского селектора , это подробно объясняет.

7
задан Georg Heiler 15 November 2016 в 07:53
поделиться

2 ответа

При создании Dataset из статически типизированной структуры (без зависимости от аргумента schema) Spark использует относительно простой набор правил для определения свойства nullable.

  • Если объект null.
  • Если объект является Option[_], тогда его DataFrame представляет nullable с None SQL NULL.
  • В любом другом случае он будет отмечен как nullable.

Поскольку Scala String - java.lang.String, что может быть null, сгенерированный столбец может nullable. По той же причине столбец bar - nullable в исходном наборе данных:

val data1 = Seq[(Int, String)]((2, "A"), (2, "B"), (1, "C"))
val df1 = data1.toDF("foo", "bar")
df1.schema("bar").nullable
Boolean = true

, но foo не (scala.Int не может быть null).

df1.schema("foo").nullable
Boolean = false

Если мы изменим определение данных на:

val data2 = Seq[(Integer, String)]((2, "A"), (2, "B"), (1, "C"))

foo будет nullable (Integer есть java.lang.Integer, а целое число в блоке может быть null):

data2.toDF("foo", "bar").schema("foo").nullable
Boolean = true

См. также: SPARK-20668 Измените ScalaUDF, чтобы обрабатывать значение nullability .

7
ответ дан user6910411 18 August 2018 в 21:51
поделиться

Вы также можете очень быстро изменить схему данных. что-то вроде этого выполнит эту работу -

def setNullableStateForAllColumns( df: DataFrame, columnMap: Map[String, Boolean]) : DataFrame = {
    import org.apache.spark.sql.types.{StructField, StructType}
    // get schema
    val schema = df.schema
    val newSchema = StructType(schema.map {
    case StructField( c, d, n, m) =>
      StructField( c, d, columnMap.getOrElse(c, default = n), m)
    })
    // apply new schema
    df.sqlContext.createDataFrame( df.rdd, newSchema )
}
0
ответ дан nil 18 August 2018 в 21:51
поделиться
Другие вопросы по тегам:

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