我是Spark的初学者,我在数据集中有Avro记录,并且正在使用这些记录创建DataSet。
textfile1.txt
line1
line2
line3
line4
textfile2.txt
line1
line2
line3
line4
textfile3.txt
line1
line2
line3
line4
textfile4.txt
line1
line2
line3
line4
我的一个列值如下
DataDataset<Row> ds = spark.read().format("com.databricks.spark.avro)
.option("avroSchema,schema.toString().load(./*.avro);
我想将此列拆分为多个列,并希望按如下所示在此新列上进行分组
+--------------------------+
| col1 |
| VCE_B_WSI_20180914_573 |
| WCE_C_RTI_20181223_324 |
---------------------------+
我真的很感谢我应该如何做的任何提示?我应该将数据集转换为RDD并应用这些转换,但不确定是否可以在RDD中添加新列。
答案 0 :(得分:0)
您可以通过在数据帧上调用withColumn函数来执行此操作。您可以在列上使用正则表达式函数来获取它的特定部分。由于您要查找3个新列,因此您可以调用同一函数3次。 如果不需要原始列,则可以在最后调用放置函数。
答案 1 :(得分:0)
尝试以下
{
val d = ds.map(r => r.getString(0).split('_'))
.withColumn("col1", col("value")(0))
.withColumn("col2", col("value")(1))
.withColumn("col3", col("value")(2))
.drop(col("value")).show
}