Varolan bir veri çerçevesinden yeni bir Dataframe oluşturuyorum, ancak bu yeni DF'ye yeni sütun eklemem gerekiyor (kodun altındaki "field1"). Bunu nasıl yaparım? Örnek örnek çalışma örneği takdir edilecektir. BuradaBoş/boş alan değerleriyle yeni Dataframe oluştur
import org.apache.spark.sql.functions.{lit, udf}
case class Record(foo: Int, bar: String)
val df = Seq(Record(1, "foo"), Record(2, "bar")).toDF
val dfWithFoobar = df.withColumn("foobar", lit(null: String))
Bir problem kolon tipi null
olmasıdır:
scala> dfWithFoobar.printSchema
root
|-- foo: integer (nullable = false)
|-- bar: string (nullable = true)
|-- foobar: null (nullable = true)
ve csv
yazar tarafından korunmaz
val edwDf = omniDataFrame
.withColumn("field1", callUDF((value: String) => None))
.withColumn("field2",
callUdf("devicetypeUDF", (omniDataFrame.col("some_field_in_old_df"))))
edwDf
.select("field1", "field2")
.save("odsoutdatafldr", "com.databricks.spark.csv");
@ zero323, bunu paylaştığınız için çok yararlı. Diğer türler için düzenlemelerimi görün. –
@DmitriySelivanov Yardımcı düzenlemeniz için teşekkür ederiz. Bir süre önce editörlerle yapılan bazı başarısız deneylerden sonra 'Option'ı kullanma fikrinden vazgeçtim :) – zero323
not:' toDF() 'şunu gerektirir import import.implicits._' – Boern