spark dataframe新增一列的四種方法

2021-10-09 08:05:54 字數 1296 閱讀 1902

dataframe新增一列有如下四種常用方法:

方法一:利用createdataframe方法,新增列的過程包含在構建rdd和schema中

方法二:利用withcolumn方法,新增列的過程包含在udf函式中

方法三:利用sql**,新增列的過程直接寫入sql**中

方法四:以上三種是增加乙個有判斷的列,如果想要增加一列唯一序號,可以使用monotonically_increasing_id

//dataframe新增一列方法1,利用createdataframe方法

val trdd = input.select(targetcolumns).rdd.map(x=>)

val schema = input.select(targetcolumns).schema.add("flag", stringtype, true)

val sample3 = ss.createdataframe(trdd, schema).distinct().withcolumnrenamed(targetcolumns, "idx")

//dataframe新增一列方法2

val code :(int => string) = (arg: int) =>

val addcol = udf(code)

val sample3 = input.select(targetcolumns).withcolumn("flag", addcol(input(targetcolumns)))

.withcolumnrenamed(targetcolumns, "idx")

//dataframe新增一列方法3

input.select(targetcolumns).createorreplacetempview("tmp")

val sample3 = ss.sqlcontext.sql("select distinct "+targetcolname+

" as idx,case when "+targetcolname+">"+critvaluer+" then 'f'"+

" when "+targetcolname+"<"+critvaluel+" then 'f' else 't' end as flag from tmp")

//新增序號列

import org.apache.spark.sql.functions.monotonically_increasing_id

val inputnew = input.withcolumn("idx", monotonically_increasing_id)

Spark DataFrame中的join型別

spark dataframe中join與sql很像,都有inner join,left join,right join,full join 那麼join方法如何實現不同的join型別呢?看其原型 def join right dataframe,usingcolumns seq string jo...

spark dataframe筆記(鏈結彙總)

spark dataframe筆記 dataframe行轉列 spark dataframe筆記 對dataframe一列值保留4位小數 spark dataframe筆記 按照dataframe某一列的數值排序,並增加一列索引 2 降序排 spark dataframe筆記 按照dataframe...

Spark DataFrame關於資料常用操作

sql語法 1.檢視全表資料 dataframe.show 2.檢視部分字段資料 有4種方法 1 dataframe.select 欄位名稱 show 2 dataframe.select 欄位名稱 show 推薦 3 dataframe.select col 欄位名稱 show 4 datafra...